Hoy os traigo el primero de una serie de videos cortos en los que voy a explicar algunos de los patrones diseño OOP más comunes en PHP. Un patrón de diseño consiste en una solución a un problema común en el desarrollo de software. En el caso de PHP, estos patrones son los que nos permiten aprovechar realmente toda la potencia de orientación a objetos de PHP5. Estos videos no pretenden ser tutoriales exhaustivos, sino simplemente una visión general y rápida de en qué consiste cada patrón, para aquellos que no estén familiarizados con esta metodología.
Empezaremos con el patrón Singleton, ya que es el más fácil de entender y utilizar. Hay varias maneras de implementar una clase singleton, pero aquí os voy a mostrar la forma más sencilla.
Ver screencast (duración: 6:00)
- Descargar videotutorial en alta calidad – MOV (12 MB)
- Descargar videotutorial optimizado para iPod/iPhone – M4V (7 MB)
Podéis ver el resto de screencasts en la página de videotutoriales, o suscribiros al podcast de iTunes.
¿Qué es un Singleton?
Un singleton consiste en una clase que solo puede tener una instancia y provee de un punto global de acceso a ella. Para ello se crea una instancia de la clase la primera vez que se referencia, y se devuelve ésta en posteriores llamadas. Esto ayuda a crear clases reusables y no depender de variables globales.
Un claro ejemplo de uso es cuando diseñamos una clase para gestionar la conexion y querys con la base de datos. A lo largo de nuestro script crearemos instancias de esa clase, pero nos interesa que siempre sea la misma ya que todas las conexiones compartirán los mismos parámetros y solo cambiará el contenido del query, por lo que no necesitamos una nueva instancia cada vez, consiguiendo con ello una mejora en el rendimiento.
Ejemplo de implementación
class Singleton { private static $singleInstancia; private function __construct(){ } public static function getInstancia(){ if(!self::$singleInstancia){ self::$singleInstancia = new self(); } return self::$singleInstancia; } /* A partir de aquí vamos añadiendo los métodos la clase */ function Metodo(){ var_dump(self::$singleInstancia); } }
Usaremos la clase de esta manera:
$mysingleton = Singleton::getInstancia(); $mysingleton->Metodo();
Para hacer nuestro singleton más robusto podríamos definir algunos de los metódos ‘mágicos’ de PHP para evitar el clonado y manejar la serialización, pero los he omitido para mantener la sencillez del ejemplo.



[...] This post was mentioned on Twitter by programania, David Rojas. David Rojas said: Nuevo en el blog: 'Videotutorial: Patrones de diseño en PHP – Singleton Pattern' http://bit.ly/cjF8En [...]
Oye pues que interesante está esto, comprendí la lógica de ello, pero aún necesitaría pensar en qué aplicarlo, ya que ahora que conosco codeigniter y que gracias a tí he aprendido mucho de él, pues ahora he estado elaborando algunas aplicaciones de manera rápida y sencilla.
El patrón Singleton se aplica mucho en la conexión a la base de datos.