Anonymous classes share static space?
| From: | Andrey Repin | Date: | Sun, 22 Oct 2017 13:08:01 +0000 |
| Subject: | Anonymous classes share static space? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-326238@lists.php.net to get a copy of this message | ||
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@freemail.ru>