347 of 410 menu

Метод __clone

Методот __clone се повикува автоматски при употреба на операторот clone. Тој овозможува да се дефинира сопствена логика за копирање на објектот. Стандардно, PHP извршува површно копирање на сите својства на објектот. Методот __clone е корисен кога треба да се имплементира длабоко копирање или да се промени однесувањето при клонирање.

Синтакса

public function __clone(): void

Пример

Да имплементираме основно клонирање на објект:

<?php class User { public $name; public function __construct($name) { $this->name = $name; } public function __clone() { echo 'Објектот е клониран'; } } $user1 = new User('John'); $user2 = clone $user1; ?>

Резултат од извршување на кодот:

'Објектот е клониран'

Пример

Да имплементираме длабоко копирање на објект со вгнездени објекти:

<?php class Address { public $city; public function __construct($city) { $this->city = $city; } } class User { public $name; public $address; public function __construct($name, $city) { $this->name = $name; $this->address = new Address($city); } public function __clone() { $this->address = clone $this->address; } } $user1 = new User('John', 'New York'); $user2 = clone $user1; $user2->address->city = 'Boston'; echo $user1->address->city; ?>

Резултат од извршување на кодот:

'New York'

Пример

Да додадеме уникатен идентификатор при клонирање:

<?php class Product { public $id; public $name; public function __construct($name) { $this->id = uniqid(); $this->name = $name; } public function __clone() { $this->id = uniqid(); } } $product1 = new Product('Laptop'); $product2 = clone $product1; echo $product1->id . ' ' . $product2->id; ?>

Резултат од извршување на кодот (пример):

'5f1a2b3c 5f1a2b3d'

Погледнете исто така

  • метод __construct,
    кој е конструктор на објектот
Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј