At 11:33 14/01/2004, John Coggeshall wrote:
>I know that this issue to some extent or another has been brought up
>before, but I just wanted to make sure that this is really how things
>are supposed to work... Apparently the statements setting B C and D
>are all equivalent.
>
>This could be absolutely bogus, but I thought maybe someone could
>explain briefly why if it is :)
>
>John
>
><?php
> class weird {
>
> var $myvar;
>
> function __construct() {
>
> $this->myvar = "A";
> $this->$myvar = "B";
> $this->${'myvar'} = "C";
> $this->${'$myvar'} = "D";
>
> echo 'this->myvar: '.$this->myvar."\n";
> echo 'this->$myvar: '.$this->$myvar."\n";
> echo 'this->${\'myvar\'}: '.$this->${'myvar'}."\n";
> echo 'this->${\'$myvar\'}: '.$this->${'$myvar'}."\n";
> echo 'this->$$$$$$$myvar: '.$this->$$$$$$$myvar."\n";
> echo 'this->$$$$$$${\'$$$myvar\'}: ' .
> $this->$$$$$$${'$$$myvar'}."\n";
>
> }
> }
>
>?>
I don't see anything odd in here. All of the assignments, except for the
first one ('A'), assign to $this->"" (because $myvar, ${'myvar'} (which is
the same as $myvar) and ${'$myvar'} (which is basically $"") are all non
existent variables which implicitly evaluate to "". Try to turn on E_ALL,
it should give you some insight...
Zeev