Re: Class Auto-Assigning to Variable

From: Date: Wed, 07 Aug 2013 21:17:01 +0000
Subject: Re: Class Auto-Assigning to Variable
References: 1 2 3 4 5  Groups: php.general 
Request: Send a blank email to php-general+get-321811@lists.php.net to get a copy of this message
On Wed, 2013-08-07 at 21:02 +0100, Stuart Dallas wrote: > On 7 Aug 2013, at 20:45, "Brian Smither" <bhsmither@gmail.com> wrote: > > >> I cannot replicate this. > > > > I don't expect anyone to be able to replicate this behavior. The example shows an > > extraordinarily stripped-down sequence of statements that informs what should work, but do to some > > unknown agent, which, therefore, cannot be included in the example, produces unexpected output. > > > > This conceptual example is not a 'sample' or 'excerpt' of the actual > > application. There is much, much more code. None of it is an apparent likely suspect in causing this > > behavior. > > > > I am hoping for a, "Oh, yeah! I've seen that happen before. It's caused > > by..." > > > > Let us focus on the central question: > > > > Would there be a PHP function that would do [what the example describes] as a side-effect? > > Yes: > > $hello = $clsHello; > > There are only a few variables that get assigned as side effects of functions, but they have > very specific names, and none of them are $hello (but I'm guessing that's not the actual > variable name) and none of them will assign a userland object. Somewhere in your code there is > something that is assigning to $hello. Find everything that's doing that and look at each > instance in detail. > > -Stuart > > -- > Stuart Dallas > 3ft9 Ltd > http://3ft9.com/ > As you've said that your excerpt doesn't replicate the problem, it's not that useful really to accurately illustrate it. I would say for definite that it's some of the surrounding code, probably something similar to this: class Hello { private $_world = 'World'; function __construct(){} function test() { $GLOBALS[strtolower(get_class($this))] = $this; } } $clsHello = new Hello(); $clsHello->test(); echo 'The variable $hello is '.gettype($hello)."\n".print_r($hello,true); There are probably many ways to achieve this, I can't think of a sane reason for any of them though! Thanks, Ash http://www.ashleysheridan.co.uk

« previous php.general (#321811) next »