Patrones de Diseño II – Singleton en PHP

Posted by Garretus on 19 junio, 2011 in Otros

Share to Facebook
Share to Google Plus

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();

.

También te puede interesar

Leave a Reply