347 of 410 menu

Metodo __clone

Il metodo __clone viene chiamato automaticamente quando si utilizza l'operatore clone. Permette di definire una logica personalizzata per la copia dell'oggetto. Per impostazione predefinita, PHP esegue una copia superficiale di tutte le proprietà dell'oggetto. Il metodo __clone è utile quando è necessario implementare una copia profonda o modificare il comportamento durante la clonazione.

Sintassi

public function __clone(): void

Esempio

Implementiamo la clonazione base di un oggetto:

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

Risultato dell'esecuzione del codice:

'Oggetto clonato'

Esempio

Implementiamo una copia profonda di un oggetto con oggetti annidati:

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

Risultato dell'esecuzione del codice:

'New York'

Esempio

Aggiungiamo un identificatore unico durante la clonazione:

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

Risultato dell'esecuzione del codice (esempio):

'5f1a2b3c 5f1a2b3d'

Vedi anche

  • metodo __construct,
    che è il costruttore dell'oggetto
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta