CLONAR OBJETOS EN PHP: CÓMO FUNCIONA CLONE Y EJEMPLOS
En php cuando copio una variable $a a una variable $b y cambio el contenido de la variable $a el contenido de la variable $b seguirá siendo el mismo que en un principio. Algo que todos los programadores de php y que es de perogullo y que para que ocurra el caso que al cambiar el contenido de la variable $a cambie el contenido de la variale $b tendríamos que haber copiado la variable $a por referencia:Veamos unos ejemplos
$a = 'hola';
$b = $a;
$a = 'adiós';
echo $a.' '.$b;
//se mostrará adiós hola
$a = 'hola';
$b = and$a;
$a = 'adiós';
echo $a.' '.$b;
//se mostrará adiós adiós
Con el siguiente ejemplo queda más claro:
class prueba{
var $a ='';
public function setA($valor)
{
$this->a = $valor;
}
public function getA()
{
echo 'a '.$this->a;
}
}
//Fin clase
$ob1 = new prueba();
$ob2 = $ob1;
$ob3 = clone $ob1;
$ob1->setA(2);
$ob1->getA();
$ob2->getA();
$ob3->getA();
Cuando se haga alguna operación con $ob1 también repercutirá en $ob2, pero no en $ob3.
Este artículo es bastante sencillo en explicación ya que no es un tema demasiado complicado pero si que es cierto que con el tema de copiar objetos en php hay que tener cuidado, ya que se pueden obtener resultados no deseados.
El clonado de objetos se usa en el patrón prototype, utiliza para crear nuevos objetos clonando objetos existentes, en lugar de instanciarlos desde cero. Este patrón es útil cuando la creación de un objeto es costosa o compleja, ya que permite duplicar objetos existentes, manteniendo su estado actual.
Concepto de Prototype
- Prototipo: Un objeto que sirve como modelo para otros objetos.
- Clonación: Crear una nueva instancia de un objeto copiando un prototipo.