24 Mar
Posted by pecesama as PHP, Programacion, patrones de diseño, php5
Imprimir este post
Como Jorge mencionó en su último post, andamos re-diseñando la arquitectura de gelato cms, para en un par de versiones mudarlo completamente a PHP5 para obtener ventaja de su poderoso motor de OOP y poder hacer un mejor uso de los patrones de diseño.
Por lo que comenzaré con una serie de posts sobre como implementar patrones de diseño con PHP5 y un par de ejemplos un poco más adelante de como aplicarlos en “la vida real” de nuestros proyectos.
El primer patrón con el que iniciaré es el patrón Singleton, el cual considero como la base de la implementación exitosa de muchos patrones.
La teoría nos dice lo siguiente:
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.
Por lo que al usar el patrón Singleton nos aseguramos que SOLO tendremos una misma instancia de nuestra clase.
¿Cómo hacerlo con PHP5?
Y para utilizarlo:
Nos leemos en la siguiente entrega ![]()
9 Responses
Patrón singleton con PHP5 — kodrs
March 24th, 2008 at 1:31 pm
1[...] Ir al tutorial -> Patrón singleton con PHP5 [...]
marcoss
March 24th, 2008 at 9:25 pm
2No me convence mucho como instancias, creo que esto:
public static function getInstance () {if (!isset(self::$instancia)) {
$obj = __CLASS__;
self::$instancia = new $obj;
}
return self::$instancia;
}
podría simplificarse en:
public static function getInstance () {self::$instancia =& $this;
}
Vos que sos mas conocedor, fijate si tiene alguna desventaja que no estoy viendo.
Patrón Singleton parte II by Pecesama.Net [weblog]
March 25th, 2008 at 9:02 am
3[...] el post anterior vimos como implementar el patrón Singleton en nuestras clases. Pero cuando tenemos nuestro sistema con muchas clases que requieren hacer uso [...]
pecesama
March 25th, 2008 at 11:50 am
4marcoss muy buena pregunta, trataré de responder lo mejor que pueda, pero se me pude ir algo, tú dime si se me esta escapando algo ahora a mi
Creo que hay un poco de confusión, el & se usaba en PHP4 para pasar variables u objetos por referencia, pero en PHP5 ya todo es por referencia, por lo que el & deja de ser útil, y me parece que usar el
self::instanciaseria mezclarlo, más bien algo así:$instancia =& new $class;En la forma en que me muestras el método
getInstanceno funcionaría correctamente ya que no hay validaciones de que si no existe previamente el objeto cree uno nuevo y el método debería llevar un & en el nombre, quedaría algo así en PHP4 ese método:function &getInstance ($class) {
static $instancia;
if (!isset( $instancia )) {
$instancia =& new $class;
}
return $instancia;
}
Y el método en PHP5 se podría simplificar de la siguiente manera:
public static function getInstance () {
if (!isset(self::$instancia)) {
self::$instancia = new self();
}
return self::$instancia;
}
marcoss
March 26th, 2008 at 9:59 am
5Ya me di cuenta donde estaba mi error, lo peor es que creo que lo probe antes de comentar y se ve que funcionaba… pero ahora veo que no tiene sentido, en fin, eso pasa por dejar un comentario cuando debería estar durmiendo
La segunda opción está mas clara igual, “self::$instancia = new self();”
pecesama
March 26th, 2008 at 7:38 pm
6Todo claro ahora
jhon
May 31st, 2008 at 6:14 pm
7bueno realmente probe el ejemplo y funciono bien el problema surge cuando incluyo “singleton” el la clase A y tambien lo hago en B;
hasta hay todo bien pero cuando trato de incluir B en A me dice que no puedo redeclarar “singleton”..mi pregunta de que manera puedo hacerlo pues necesito manejar las clase…grasias
pecesama
May 31st, 2008 at 8:19 pm
8jhon eln la segunda parte de este patron explico como usarlo http://www.pecesama.net/weblog/2008/03/25/patron-singleton-parte-ii/
Patrón Singleton parte II | Bajalo.com - Videos Gratis, Musica, Noticias, Deportes, Tecnologia, Farandula y mucho mas
July 20th, 2008 at 10:20 pm
9[...] el post anterior vimos como implementar el patrón Singleton en nuestras clases. Pero cuando tenemos nuestro sistema con muchas clases que requieren hacer uso [...]
RSS feed for comments on this post · TrackBack URI
Leave a reply
Recomendados
Pecesama.Net [Wiki]
Meta
Publicidad
Calendario
Categorias
Recent Entries
Recent Comments
Most Commented
Pecesama.Net [weblog] is proudly powered by WordPress - BloggingPro theme by: Design Disease