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

Задача
Необходимо создать копию существующего объекта. Например, есть объект, содержащий сообщение для рассылки, и вы хотите скопировать его в качестве основы для ответного сообщения.

Решение
Для присваивания объекта новой переменной применяется оператор =:

$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(), вызываемого при каждом копировании объекта. Это обеспечивает более тонкое управление набором копируемых свойств.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Динамическая реализация объекта
Динамическое создание класса
Добавление свойств в базовый объект
Доступ к переопределенным методам
Обнаружение методов и свойств объекта

Вернуться в раздел: PHP / 7. Классы и объекты