Необходимо создать копию существующего объекта. Например, есть объект, содержащий сообщение для рассылки, и вы хотите скопироать его в качестве основы для ответного сообщения.
Для присваивания объекта новой переменной применяется оператор "=" :
$rabbit = new rabbit;
$rabbit -> eat( );
$rabbit -> hop( );
$baby = $rabbit;
В PHP для создания копии объекта достаточно присвоить его новой переменной. Начиная с этого момента каждый экземпляр объекта живет независимой жизнью, и изменение одного из них не оказывает влияния на другой:
class person {
var $name;
function person ($name) {
$this -> name = $name;
}
}
$adam = new person(' adam ');
print $adam -> name; // adam
$dave = $adam;
$dave -> name = ' dave ';
print $dave -> name; // dave
print $adam -> name; // все еще adam
Zend Engine 2 допускает явное клонирование объекта с помощью метода __clone(), вызываемого при каждом копировании объекта. Это обеспечивает более тонкое управление набором копируемых свойств.