Patrón Singleton para gestionar las Configuraciones del Sistema en WP
Escrito el 01. Nov, 2009 por Cristian Correa Urrutia
Aquí una muestra de como optimizar el acceso de datos por medio del Patrón Singleton en WordPress
Primero precisamos lo que significa Patrón Singleton.
El patrón de diseño singleton (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.
Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.
El patrón singleton se implementa creando en nuestra clase un método que crea una instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).

Si tenemos una clase llamada baseDeDatos que nos devuelve un objeto llamado bd en vez que las aplicaciones usen libremente la clase y puedan crear tantas instancias del objeto “bd” 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.
1 2 3 4 5 6 7 8 9 10 | <?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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?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() {} } ?> |
Y para acceder a las configuraciones tenemos estos ejemplos:
1 2 3 4 5 6 7 8 | <?php $config = config::getInstance(); $config->db['host'] = 'localhost'; $config->db['user'] = 'root'; $config->db['pwd'] = ''; $config->db['name'] = 'motor'; $config->db['type'] = 'mysql'; ?> |
Fuente: Calinsoft.com

