Ver Mensaje Individual
  #10 (permalink)  
Antiguo 19/07/2011, 11:21
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Singleton: implementacion

Pues no, porque que tal si en algún punto de tu clase cambia self::$_instance por otra cosa, tendrías un error:

Código PHP:
Ver original
  1. class Singleton
  2. {
  3.        private static $_instance = null;
  4.  
  5.        private function __construct(){}
  6.  
  7.        public static function getInstance()
  8.        {
  9.               if(!(self::$_instance instanceof self)) {
  10.                       self::$_instance = new self();
  11.               }
  12.  
  13.               return self::$_instance;
  14.        }
  15.  
  16.        private function __clone() {}
  17.  
  18.        public function hijackInstance()
  19.        {
  20.               self::$_instance = new stdClass();
  21.        }
  22. }
  23.  
  24. $instance = Singleton::getInstance();
  25. var_dump($instance);
  26. $instance->hijackInstance();
  27. var_dump($instance);

Corre ese código como esta, y reemplaza el chequeo por is_object y puedes ver donde tienes un problema.

La idea del patrón es que sea un punto único de entrada, digamos un constructor único por instancia.

Saludos.