347 of 410 menu

Método __clone

El método __clone se llama automáticamente cuando se usa el operador clone. Permite definir la lógica propia de copia del objeto. Por defecto, PHP realiza una copia superficial de todas las propiedades del objeto. El método __clone es útil cuando es necesario implementar una copia profunda o cambiar el comportamiento al clonar.

Sintaxis

public function __clone(): void

Ejemplo

Implementemos la clonación básica de un objeto:

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

Resultado de ejecutar el código:

'Objeto clonado'

Ejemplo

Implementemos la copia profunda de un objeto con objetos anidados:

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

Resultado de ejecutar el código:

'New York'

Ejemplo

Añadamos un identificador único al clonar:

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

Resultado de ejecutar el código (ejemplo):

'5f1a2b3c 5f1a2b3d'

Ver también

  • método __construct,
    que es el constructor del objeto
Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar