Re: Anonymous classes share static space?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 22.10.2017 at 15:08, Andrey Repin wrote:

> https://3v4l.org/vLjTI
> 
> <?php
> 
> function creator($var)
> {
>   return new class($var) {
>     private static $var;
>     function __construct($var)
>     {
>       static::$var = $var;
>     }
> 
>     function __debugInfo()
>     {
>       return [
>         "\0*\0var" => static::$var,
>       ];
>     }
>   };
> }
> 
> $a = creator('A');
> $b = creator('B');
> var_dump($a, $b, $a === $b);
> 
> 
>> The output:
> 
> object(class@anonymous)#1 (1) {
>   ["var":protected]=>
>   string(1) "B"
> }
> object(class@anonymous)#2 (1) {
>   ["var":protected]=>
>   string(1) "B"
> }
> bool(false)
> 
> 
> However, the output contradicting itself.
> By behavior, the two objects are of the same class, by comparison - they are not.
> Is this… intended behavior?

The === operator compares objects by identity.  In this case the objects
have the same class, and are equal (==)[1], but not identical.

[1] <https://3v4l.org/NEBTd>

-- 
Christoph M. Becker

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux