Создание новых объектов через клонирование существующего (прототипа), а не через конструктор.
class Document implements Cloneable {
public function __clone() {
$this->sections = array_map(fn($s) => clone $s, $this->sections);
}
}
$doc2 = clone $doc1;Полезно когда создание объекта дорого (сложная инициализация, запросы к БД) или когда нужно копировать с небольшими изменениями.