En ocasiones puede ser que necesitemos que una clase esté instanciada una, y solo una, vez durante la ejecución de nuestra aplicación. Para ello podemos hacer uso del patrón de diseño singleton. Para ello tenemos que definir el constructor como privado, para evitar que se puedan crear instancias desde fuera de los métodos de la clase; una variable estática privada, que contendrá una instancia de la clase; un método con el que obtendremos dicha instancia y también sobreescribiremos el método __clone para que no se pueda clonar la clase. Veámoslo con un ejemplo:
<?php class Singleton { private static $singleton = NULL; private function __construct() { // Código del constructor. echo "constructor Singleton."; } // Método que nos devuelve la instancia de la clase. public static function getSingleton() { // Si la clase no está instanciada la creamos. if(self::$singleton == NULL) { self::$singleton = new Singleton(); } // Devolvemos la instancia de la clase return self::$singleton; } // Sobreescribimos el método __clone para que produzca un error. public function __clone() { trigger_error("No se puede clonar la clase Singleton.", E_USER_ERROR); } } ?>
Cuando queramos hacer uso de esta clase tendremos que llamar a Singleton::getSingleton(), que nos devuelve la instancia única de la clase. Esto nos puede ser útil, por ejemplo, para el manejo de las conexiones a base de datos o para hacernos una clase que maneje la configuración.
Artículos relacionados:
Artículos relacionados:
Tags: patrones de diseño, PHP
Related……
[…]just beneath, are numerous totally not related sites to ours, however, they are surely worth going over[…]……