Сышышь ты, выходи сюда,
поговорим !

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

Опубликовано: 06.09.2018

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

PHP ООП Перегрузка методы

Оператор присваивания "=" не создаёт новую копию объекта и старый и новый объект указывают на одну и туже область памяти.



Продемонстрируем операцию присвоения одного объекта класса "classes_work" другому. При этом изменение члена класса нового объекта "$_class_new" будет отражаться на старом объекте "$classes_work".

Пример присвоения:

class classes_work { public $_work_variable; public function __construct () { $this->_work_variable = 10; } } $classes_work = new classes_work(); echo $classes_work->_work_variable; // Присвоение одного объекта другому приводит не к созданию новой копии, а к получению текущим объектом дополнительного псевдонима $_class_new = $classes_work; $_class_new->_work_variable = 200; echo $classes_work->_work_variable; echo $_class_new->_work_variable;

Клонирование - это создание копии текущего объекта, которая выполняется с помощью специального слова "clone", которое располагается непосредственно перед клонируемым объектом.


Что такое геттеры и сеттеры для класса. Методы get и set. Инкапсуляция это. Пример. C++ Урок #76

class classes_work { public $_work_variable; public function __construct () { $this->_work_variable = 10; } } $classes_work = new classes_work(); // Получение независимой копии объекта посредством клонирования $_class_new = clone $classes_work; $_class_new->_work_variable = 200; echo $classes_work->_work_variable; // Результат: 10 echo $_class_new->_work_variable; // Результат: 200

Оператор присваивания "=" не единственный способ создания псевдонима объекта. Псевдоним объекта можно создать при передачи самого объекта во внутрь функции. Массивы и объекты передаются во внутрь функции по ссылке в отличии от переменных которые передаются по значению. Это означает, что изменения, произведённые над объектом внутри функции, отражаются на объекте после выполнения функции.


Копирование динамического массива c++. Скопировать массив с++. С++ Для начинающих. Урок #58

Пример передачи объекта по ссылке в функцию:

class classes_work { public $_work_variable; public function __construct () { $this->_work_variable = 10; } } $classes_work = new classes_work(); function testfunc ($classes_work) { $classes_work->_work_variable = 'Принято значение созданное в функции "testfunc"'; } testfunc ($classes_work); echo $classes_work->_work_variable; // Результат: "Принято значение созданное в функции "testfunc"".

Для того чтобы передать объект по значению, как другую переменную, следует при вызове функции написать перед объектом слово "clone".

class classes_work { public $_work_variable; public function __construct () { $this->_work_variable = 10; } } $classes_work = new classes_work(); function testfunc ($classes_work) { echo $classes_work->_work_variable = 'Создана копия объекта "$classes_work"<br>'; } testfunc (clone $classes_work); echo $classes_work->_work_variable; // Результат: 10.

В примере внутрь функции передаётся не сам объект "$classes_work", а его копия, поэтому изменения, которые производятся над объектом, не отражаются на объекте в основной программе.

2577

rss