A raíz de otra pregunta de aviana sobre cómo utilizar atributos estáticos en PHP4... estuve revisando la implementación de un Singleton que dejó Webstudio en este post:
http://www.forosdelweb.com/showpost....68&postcount=7
Pues al probarlo me dí con la sorpresa de que no funciona como se espera. Y tiene que ver con el hecho de referenciar a o no la primera instancia.
Este es el ejemplo que probé:
Código PHP:
class Ejemplo{
var $atributo;
function &instancia(){
static $_instancia;
if(empty($_instancia)){
$_instancia = & new Ejemplo();// OJO!!! A esta línea me voy a referir
}
return $_instancia;
}
}
$obj1 = &Ejemplo::instancia();
$obj1->atributo = "Uno";
$obj2 = &Ejemplo::instancia();
$obj2->atributo = "Dos";
echo $obj1->atributo;// Esperaríamos que imprima "Dos"
Si en esa línea no se pone el operador "&", o sea simplemente se deja:
Código PHP:
$_instancia = new Ejemplo();
¿Alguien podría explicar el por qué de este comportamiento?
Saludos