Posted by Garretus on 19 junio, 2011 in Otros
Una breve entrada para describir el patrón de diseño denominado Singleton y para contaros cómo podrÃamos implementarlo en PHP.
Intención del patrón
Garantiza que una clase sólo tenga una instancia y proporciona un punto de acceso global a ella.
Problema a resolver
Varios clientes distintos precisan referenciar a un mismo elemento y queremos asegurarnos de que no hay más de una instancia de ese elemento.
Solución -> Singleton
Garantizaremos una única instancia.
class MiSingleton{ // Contenedor de la instancia del singleton private static $instance; // Un constructor privado evita la creación de un nuevo objeto private function __construct() { echo 'Construido!'; } // método singleton public static function singleton() { if (!isset(self::$instance)) { $c = __CLASS__; self::$instance = new $c; } return self::$instance; } // método de ejemplo public function ladrar() { echo 'Woof!'; } // Evita que el objeto se pueda clonar public function __clone() { trigger_error('Clone is not allowed.', E_USER_ERROR); } }
¿Cómo obtengo una instancia de la clase y cómo uso sus métodos?
$objMiSingleton = MiSingleton::singleton(); $objMiSingleton->ladrar();
.