Я использую PHP 7.3.0
Рассмотрим приведенный ниже код из Руководства PHP :
<?php
class Test
{
static public function getNew()
{
return new static;
}
}
class Child extends Test
{}
$obj1 = new Test();
$obj2 = new $obj1;
var_dump($obj1 !== $obj2);
?>
Вывод вышеуказанного кода:
bool(true)
Насколько я понимаю, переменная объекта $obj1
содержит идентификатор объекта, который позволяет методам доступа к объекту найти фактический объект класса Test
.
Тогда, как этой переменной объекта с именем $obj1
был добавлен префикс с ключевым словом new
, когда она присваивается переменной $obj2
?
Переменная объекта $obj1
должна содержать идентификатор объекта для объекта класса Test
.
Что было достигнуто при использовании ключевого слова new
с переменной объекта, которая уже содержит некоторый идентификатор объекта?
Что на самом деле сравнивается в операторе var_dump()
?
Почему вывод сравнения верен?