347 of 410 menu

Metoda __clone

Metoda __clone este apelată automat atunci când se utilizează operatorul clone. Ea permite definirea unei logici personalizate de copiere a obiectului. În mod implicit, PHP efectuează o copiere superficială a tuturor proprietăților obiectului. Metoda __clone este utilă când este necesar să se implementeze o copiere profundă sau să se modifice comportamentul la clonare.

Sintaxă

public function __clone(): void

Exemplu

Să implementăm clonarea de bază a unui obiect:

<?php class User { public $name; public function __construct($name) { $this->name = $name; } public function __clone() { echo 'Obiectul a fost clonat'; } } $user1 = new User('John'); $user2 = clone $user1; ?>

Rezultatul executării codului:

'Obiectul a fost clonat'

Exemplu

Să implementăm o copiere profundă a unui obiect cu obiecte incluse:

<?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; ?>

Rezultatul executării codului:

'New York'

Exemplu

Să adăugăm un identificator unic la clonare:

<?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; ?>

Rezultatul executării codului (exemplu):

'5f1a2b3c 5f1a2b3d'

Vezi și

  • metoda __construct,
    care este constructorul obiectului
Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge