Por lo tanto, siempre me ha implementado un conjunto unitario de este modo:Implementar un singleton de PHP: propiedades de clases estáticas o variables de métodos estáticos?
class Singleton {
private static $_instance = null;
public static function getInstance() {
if (self::$_instance === null) self::$_instance = new Singleton();
return self::$_instance;
}
private function __construct() { }
}
Sin embargo, recientemente se me ocurrió que yo también podría ponerlo en práctica con variables estáticas miembros en cuanto a:
class Singleton {
public static function getInstance() {
//oops - can't assign expression here!
static $instance = null; // = new Singleton();
if ($instance === null) $instance = new Singleton();
return $instance;
}
private function __construct() { }
}
Para mí, esto es más limpio porque no satura la clase , y no tengo que hacer ninguna verificación explícita de existencia, pero como nunca he visto esta implementación en ningún otro lado, me pregunto:
¿Hay algo de malo con el uso de la segunda implementación sobre la primera?
El segundo enfoque también se puede implementar como una función normal, yo uso esto a veces, por ejemplo 'i() -> DB()'. –
+1 buena pregunta y respuestas interesantes – NikiC
@Alix: No sigo. ¿Cómo podría implementarse la función 'getInstance' de forma no estática y aún pertenecer a singletons? –