Patrón Singleton para gestionar las Configuraciones del Sistema en WP

Patrón Singleton para gestionar las Configuraciones del Sistema en WP

Wordpress, Wordpress

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).

singleton

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

Cristian Correa Urrutia

Estudiante memorista de Ingeniería en Informática USM. Especialista en usabilidad, diseño de sitios Web, optimización SEO , desarrollo Web 2.0 y además de tener experiencia en lenguajes como PHP y ASP.Net. Es un aficionado al Marketing y al Diseño Gráfico. Cristian Correa

Tags:

Deja tu Comentario

PHVsPjxsaT48c3Ryb25nPndvb19hZHNfcm90YXRlPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkXzI1MF9hZHNlbnNlPC9zdHJvbmc+IC0gPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+PCEtLQ0KZ29vZ2xlX2FkX2NsaWVudCA9IFwicHViLTc5MTI2NDIyNzY1ODczMzlcIjsNCi8qIDI1MHgyNTAsIHdwZGV2ZWxvcGVycywgc2lkZWJhciAqLw0KZ29vZ2xlX2FkX3Nsb3QgPSBcIjU0MzE4NjQ4ODVcIjsNCmdvb2dsZV9hZF93aWR0aCA9IDI1MDsNCmdvb2dsZV9hZF9oZWlnaHQgPSAyNTA7DQovLy0tPg0KPC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIg0Kc3JjPVwiaHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qc1wiPg0KPC9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMjUweDI1MC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF8yNTBfdXJsPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfY29udGVudF9hZHNlbnNlPC9zdHJvbmc+IC0gPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+PCEtLQ0KZ29vZ2xlX2FkX2NsaWVudCA9IFwicHViLTc5MTI2NDIyNzY1ODczMzlcIjsNCi8qIDQ2OHg2MCx3cGRldmVsb3BlcnMgY29udGVuaWRvIGVudHJlIHBvc3QgKi8NCmdvb2dsZV9hZF9zbG90ID0gXCI0Njc1NTQxOTI2XCI7DQpnb29nbGVfYWRfd2lkdGggPSA0Njg7DQpnb29nbGVfYWRfaGVpZ2h0ID0gNjA7DQovLy0tPg0KPC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIg0Kc3JjPVwiaHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qc1wiPg0KPC9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fYWRfY29udGVudF9kaXNhYmxlPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfY29udGVudF91cmw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8xPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS0xLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzI8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtMy5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV80PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS00LmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzU8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTQuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNjwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtNC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3BfYWRzZW5zZTwvc3Ryb25nPiAtIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPjwhLS0NCmdvb2dsZV9hZF9jbGllbnQgPSBcInB1Yi03OTEyNjQyMjc2NTg3MzM5XCI7DQovKiA0Njh4NjAsd3BkZXZlbG9wZXJzIGNvbnRlbnQgKi8NCmdvb2dsZV9hZF9zbG90ID0gXCI1MjA3MTEzNDM1XCI7DQpnb29nbGVfYWRfd2lkdGggPSA0Njg7DQpnb29nbGVfYWRfaGVpZ2h0ID0gNjA7DQovLy0tPg0KPC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIg0Kc3JjPVwiaHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qc1wiPg0KPC9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX2Rpc2FibGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9pbWFnZTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTQ2OHg2MC0yLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF91cmw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfMTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzM8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfNDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF81PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzY8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGdyZXkuY3NzPC9saT48bGk+PHN0cm9uZz53b29fYXV0b19pbWc8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fY2F0X2V4PC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fY29tbWVudF9wb3N0czwvc3Ryb25nPiAtIDM8L2xpPjxsaT48c3Ryb25nPndvb19jb250ZW50PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jb250ZW50X2FyY2hpdmVzPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jb250ZW50X2ZlYXQ8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2N1c3RvbV9mYXZpY29uPC9zdHJvbmc+IC0gaHR0cDovL3dwZGV2ZWxvcGVycy5vcmcvd3AtY29udGVudC93b29fdXBsb2Fkcy8xOS13cC1kZXZlbG9wZXJzLWljb24tMTd4MTcucG5nPC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfcG9zdHM8L3N0cm9uZz4gLSBTZWxlY3QgYSBudW1iZXI6PC9saT48bGk+PHN0cm9uZz53b29fZmVlZGJ1cm5lcl9pZDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlZWRidXJuZXJfdXJsPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfYXJjPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfbGluazwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2xpbmtfZGVzYzwvc3Ryb25nPiAtIGVsIGluaWNpbzwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfbGlua190ZXh0PC9zdHJvbmc+IC0gSW5pY2lvPC9saT48bGk+PHN0cm9uZz53b29faG9tZV90aHVtYl9oZWlnaHQ8L3N0cm9uZz4gLSA5MjwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSAyNDc8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9oZWlnaHQ8L3N0cm9uZz4gLSAyMTA8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9zaW5nbGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2ltYWdlX3dpZHRoPC9zdHJvbmc+IC0gNTQwPC9saT48bGk+PHN0cm9uZz53b29fbG9nbzwvc3Ryb25nPiAtIGh0dHA6Ly93cGRldmVsb3BlcnMub3JnL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMjItd3AtZGV2ZWxvcGVycy5wbmc8L2xpPjxsaT48c3Ryb25nPndvb19tYW51YWw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vc3VwcG9ydC90aGVtZS1kb2N1bWVudGF0aW9uL2J1c3ktYmVlLzwvbGk+PGxpPjxzdHJvbmc+d29vX3BvcHVsYXJfcG9zdHM8L3N0cm9uZz4gLSAzPC9saT48bGk+PHN0cm9uZz53b29fcmVzaXplPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19zaG9ydG5hbWU8L3N0cm9uZz4gLSB3b288L2xpPjxsaT48c3Ryb25nPndvb19zaW5nbGVfaGVpZ2h0PC9zdHJvbmc+IC0gMjEwPC9saT48bGk+PHN0cm9uZz53b29fc2luZ2xlX3dpZHRoPC9zdHJvbmc+IC0gNTQwPC9saT48bGk+PHN0cm9uZz53b29fdGFiczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fdGhlbWVuYW1lPC9zdHJvbmc+IC0gQnVzeSBCZWU8L2xpPjxsaT48c3Ryb25nPndvb190aHVtYl9oZWlnaHQ8L3N0cm9uZz4gLSA2MDwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX3dpZHRoPC9zdHJvbmc+IC0gMTUwPC9saT48bGk+PHN0cm9uZz53b29fdHdpdHRlcjwvc3Ryb25nPiAtIHdwZGV2ZWxvcGVyc29yZzwvbGk+PGxpPjxzdHJvbmc+d29vX3VwbG9hZHM8L3N0cm9uZz4gLSBhOjIwOntpOjA7czo2NzoiaHR0cDovL3dwZGV2ZWxvcGVycy5vcmcvd3AtY29udGVudC93b29fdXBsb2Fkcy8yMi13cC1kZXZlbG9wZXJzLnBuZyI7aToxO3M6Njc6Imh0dHA6Ly93cGRldmVsb3BlcnMub3JnL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMjEtd3AtZGV2ZWxvcGVycy5wbmciO2k6MjtzOjY3OiJodHRwOi8vd3BkZXZlbG9wZXJzLm9yZy93cC1jb250ZW50L3dvb191cGxvYWRzLzIwLXdwLWRldmVsb3BlcnMucG5nIjtpOjM7czo3ODoiaHR0cDovL3dwZGV2ZWxvcGVycy5vcmcvd3AtY29udGVudC93b29fdXBsb2Fkcy8xOS13cC1kZXZlbG9wZXJzLWljb24tMTd4MTcucG5nIjtpOjQ7czo2NzoiaHR0cDovL3dwZGV2ZWxvcGVycy5vcmcvd3AtY29udGVudC93b29fdXBsb2Fkcy8xOC13cC1kZXZlbG9wZXJzLnBuZyI7aTo1O3M6Njc6Imh0dHA6Ly93cGRldmVsb3BlcnMub3JnL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMTctd3AtZGV2ZWxvcGVycy5wbmciO2k6NjtzOjY3OiJodHRwOi8vd3BkZXZlbG9wZXJzLm9yZy93cC1jb250ZW50L3dvb191cGxvYWRzLzE2LXdwLWRldmVsb3BlcnMucG5nIjtpOjc7czo2NzoiaHR0cDovL3dwZGV2ZWxvcGVycy5vcmcvd3AtY29udGVudC93b29fdXBsb2Fkcy8xNS13cC1kZXZlbG9wZXJzLnBuZyI7aTo4O3M6NzQ6Imh0dHA6Ly93cGRldmVsb3BlcnMuc2thdWNoLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzE0LTEzLWxvZ28tdHJhbnMucG5nIjtpOjk7czo3MToiaHR0cDovL3dwZGV2ZWxvcGVycy5za2F1Y2guY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMTMtbG9nby10cmFucy5wbmciO2k6MTA7czo3MToiaHR0cDovL3dwZGV2ZWxvcGVycy5za2F1Y2guY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMTItbG9nby10cmFucy5wbmciO2k6MTE7czo3MToiaHR0cDovL3dwZGV2ZWxvcGVycy5za2F1Y2guY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMTEtbG9nby10cmFucy5wbmciO2k6MTI7czo3MToiaHR0cDovL3dwZGV2ZWxvcGVycy5za2F1Y2guY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMTAtbG9nby10cmFucy5wbmciO2k6MTM7czo3MDoiaHR0cDovL3dwZGV2ZWxvcGVycy5za2F1Y2guY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvOS1sb2dvLXRyYW5zLnBuZyI7aToxNDtzOjcyOiJodHRwOi8vd3BkZXZlbG9wZXJzLnNrYXVjaC5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy84LTUtbG9nby10cmFucy5wbmciO2k6MTU7czo3MjoiaHR0cDovL3dwZGV2ZWxvcGVycy5za2F1Y2guY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNy01LWxvZ28tdHJhbnMucG5nIjtpOjE2O3M6NzI6Imh0dHA6Ly93cGRldmVsb3BlcnMuc2thdWNoLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzYtNS1sb2dvLXRyYW5zLnBuZyI7aToxNztzOjcwOiJodHRwOi8vd3BkZXZlbG9wZXJzLnNrYXVjaC5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy81LWxvZ28tdHJhbnMucG5nIjtpOjE4O3M6NzA6Imh0dHA6Ly93cGRldmVsb3BlcnMuc2thdWNoLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzQtbG9nby10cmFucy5wbmciO2k6MTk7czo3MDoiaHR0cDovL3dwZGV2ZWxvcGVycy5za2F1Y2guY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMy1sb2dvLXRyYW5zLnBuZyI7fTwvbGk+PGxpPjxzdHJvbmc+d29vX3ZpZGVvX2NhdGVnb3J5PC9zdHJvbmc+IC0gVmlkZW9zPC9saT48L3VsPg==