Клонирование объектов | Object Cloning

В php5 клонирование объектов происходит при помощи метода clone. При копировании сложных объектов бывает необходимо контролировать что и как клонировать. Для этого используется метод __clone(). Метод __clone() вызывается автоматически когда объект копируется командой clone.

class Person{
	private $паmе ;
	private $age;
	private $id ;
	function construct ( $name, $age ) {
		$this->name = $name ;
		$this->age = $age ;
	}
	function setId( $id ) {
		$this->id = $id;
	}
	function clone ( ){
		$this->id = 0 ;
	}
}

В данном примере при клонировании свойство $this->id у нового объекта будет равен нулю.

Если объект имеет связи с другими объектами то при простом копировании мы получим прямые ссылки на эти самые объекты. Чтобы этого избежать - нужно явно клонировать связи на другие объекты.