Web lists-archives.com

Re: [PHP] Anonymous classes share static space?




On Sun, Oct 22, 2017 at 9:08 AM, Andrey Repin <anrdaemon@xxxxxxxxxxx> wrote:

> Greetings, All.
>
> 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?
>
>
> --
> Sincerely Yours, Andrey Repin <anrdaemon@xxxxxxxxxxx>
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
They are not the same class, they are anonymous.