class Order {
public array $items = [];
public Address $address;
public function __clone() {
// Без __clone: $address будет общим (shallow copy)
$this->address = clone $this->address; // deep copy
// Массив скаляров копируется автоматически
}
}
$order1 = new Order();
$order2 = clone $order1; // вызывает __clone()Shallow copy (по умолчанию) - копирует примитивы, но объекты и ресурсы остаются общими. Deep copy - нужно реализовать через __clone(), клонируя вложенные объекты.