Supongamos que tenemos una clase que implementa un singleton para "forzar" a que sólo exista un sólo objeto de esa clase.
Bien, cuando haya un usuario utilizando la aplicación, podemos asegurar que sólo hay una instancia de esa clase en memoria.
Entonces, surge la pregunta: pero si hay varios usuarios concurrentes, comparten ellos la misma instancia? No lo digo por el problema productor-consumidor, para el caso donde lo estoy aplicando no me tengo que preocupar de las escrituras -porque no las hay- sobre el singleton. (sí, me refiero a la C en MVC )
A lo mejor me estoy rallando un poco, pero cuál es el ciclo de vida un objeto? Desde que lo construyo, hasta cuándo sigue vivo en memoria?
Y la ejecución de una aplicación, empieza cuando el servidor recibe la petición y termina cuando le devuelve la respuesta? No hay ninguna forma de hacer que los objetos persistan para que la aplicación mantenga el estado? (por estado me refiero, a los objetos que formarían un supuesto núcleo ya construidos: controlador, factorías de objetos, iteradores y alguno más)
buff, no sé, a lo mejor me estoy echando un rollo sin sentido.
Para aquellos que eso de singleton suene a chino, he aquí un ejemplo:
Código PHP:
class Controlador {
function Controlador(){
echo "[Controlador] Objeto construido<br/>";
}
function metodo($param='1'){
return;
}
function &getInstancia(){
static $instancia;
if ( !isset( $instancia ) ){
$instancia =& new Controlador();
}
return $instancia;
}
}
Código PHP:
$c0 =& Controlador::getInstancia();
$c1 =& Controlador::getInstancia();
$c2 =& Controlador::getInstancia();
$c3 =& Controlador::getInstancia();
$c0 -> metodo();
$c2 -> metodo('abc');
La llamada esa "rara" al método getInstancia() se debe a que actúa como un método estático o método de clase, el cual no necesita una objeto para ser invocado.
respondiendo que es gerundio.