Ваш пример скорее сего в методе copy1(), но вдруг и другие понадобятся:
<?php
class Any
{
private $a;
public function __construct(string $a)
{
$this->a = $a;
}
// Простое клонирование 1 в 1
public function copy1(): self
{
return clone $this;
}
// Для примера, как сделать похожий объект на основе состояния текущего объекта
public function copy2(): self
{
$new = new self($this->a);
// тут делаем еще что-либо
// $new->a тут доступна напрямую
return $new;
}
// Меняем состояние и возвращаем новый объект, иммутабельное поведение
// хорошая практика
public function withNewA(string $a): self
{
$new = clone $this;
$new->a = $a;
return $new;
}
}
$any = new Any("A");
var_dump($any === $any->copy1()); // false
var_dump($any === $any->copy2()); // false
var_dump($any === $any->withNewA('B')); // false, изменили объект, но получили новый, а не измененный старый
sandbox.onlinephpfunctions.com/code/30bb3f1fb842ef...