Clonación de objetos
En esta página
Clonación de objetos#
La creación de una copia de un objeto con exactamente las mismas propiedades no siempre es el comportamiento deseado. Un buen ejemplo para ilustrar la necesidad de un constructor de copia: si se tiene un objeto que representa una ventana GTK y el objeto contiene el recurso que representa esa ventana GTK, al crear una copia, se puede desear crear una nueva ventana con las mismas propiedades, pero que el nuevo objeto contenga un recurso que represente la nueva ventana.
Una copia de objeto se crea utilizando la palabra clave clone (que invoca al método __clone() del objeto, si ha sido definido).
$copy_of_object = clone $object;
Cuando un objeto es clonado, PHP realiza una copia superficial de todas las propiedades del objeto. Todas las propiedades que son referencias a otras variables permanecerán como referencias.
__clone(): void
```php
Una vez realizada la clonación, si se ha definido un método [\_\_clone()](#object.clone), el método [\_\_clone()](#object.clone) del nuevo objeto será llamado, para permitir que cada propiedad que deba ser modificada lo sea.
Ejemplo de duplicación de objetos
El ejemplo anterior mostrará:
Objeto original : MyCloneable Object ( [object1] => SubObject Object ( [instance] => 1 )
[object2] => SubObject Object
(
[instance] => 2
)
) Objeto clonado : MyCloneable Object ( [object1] => SubObject Object ( [instance] => 3 )
[object2] => SubObject Object
(
[instance] => 2
)
)
Es posible acceder a un miembro de un objeto recién clonado en una sola expresión:
Acceso a un miembro de un objeto recién clonado
```php
Resultado del ejemplo anterior es similar a:
2016