Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
<?php
class Point
{
public function __construct(public int $x) {}
}
$a = new Point(1);
$b = $a;
$c = clone $a;
$b->x = 5;
echo $a->x, ' ', $b->x, ' ', $c->x, "\n";5 5 1
- Ждать
1 5 1, будто$b = $aкопирует объект, как массив: копируется только идентификатор объекта, и$aс$bведут к одному объекту. - Считать
cloneещё одним именем того же объекта: он строит второй объект с копиями свойств, поэтому поздняя запись не задевает$c.
- Что вернут здесь
$a === $bи$a === $c? - Если бы в свойстве
Pointлежал другой объект, скопировал бы егоclone?