Primero precisamos lo que significa Patrón Singleton.
El Patrón Singleton, garantiza que una clase posea una sola instancia, y suministra un punto de acceso global a ella.

Un caso hipotético de aplicación podría ser: tenemos una clase BaseDeDatos que nos devuelve un objeto llamado “bd” una vez creada la conexión con la base de datos. En vez de permitir que las aplicaciones usen libremente la clase y puedan crear tantas instancias del objeto “Base de Datos” como aplicaciones y accesos a bases existan, se decide restringir la creación a una sola instancia y esta será compartida y usada por todos.
<?php
interface ISingleton
{
/**
* Método que va a devolver la instancia Singleton
* @return (Singleton)
*/
public static function getInstance();
}
?>
Un ejemplo claro.
Una Clase (Singleton) Config. “Config” para los amigos, que no es otra que la encargada de mantener la configuración del acceso a la base de datos y algunas otras cosas, como límites, nombres, etc.
Su uso es muy simple, se agrega el atributo, se lo inicializa, y listo.
<?php
class Config implements ISingleton{
// Definimos el atributo que guarda la instancia del Singleton
private static $config = null;
/**
* Retorna la clase Singleton si existe en memoria
* Si no existe, crea una nueva
* @return (Singleton)
*/
public static function getInstance()
{
if ( self::$config == null ):
self::$config = new Config();
endif;
return self::$config;
}
// Prevenir a los usuarios de poder clonar la instancia
public function __clone() {}
}
?>
Para usar una de las configuraciones, podemos simplemente:
<?php
$config = config::getInstance();
$config->db['host'] = 'localhost';
$config->db['user'] = 'root';
$config->db['pwd'] = '';
$config->db['name'] = 'motor';
$config->db['type'] = 'mysql';
?>
Fácil de conservar, de actualizar y acceder.
Referencias
Categorizado: Desarrollo Web Etiquetado: Interfaces |
Patrones |
PHP |
Singleton