PHP avanzado: herramientas profesionales

El patrón de Singleton

¡Prueba gratis durante 10 días

nuestros 1150 cursos !

Prueba gratis Mostrar modalidades de suscripción
Uno de los patrones de diseño más conocidos y más sencillos de implementar es el patrón de Singleton. Veamos por qué es importante conocer su implementación y cómo podemos auxiliarnos de él en nuestras aplicaciones web.
04:22

Transcripción

El patrón de diseño Singleton es uno de los patrones más sencillos y más claros para comenzar a ver patrones y nos permite compartir la misma instancia de un objeto aunque queramos instanciarlo ene veces. Eso puede ser muy útil por ejemplo al momento de crear una conexión a una base de datos, con la cual crearíamos una conexión cada vez que se instancia. Al solo estar instanciada una vez, solo se conectaría una vez. Hagamos el ejemplo, el truco está en no utilizar el constructor para crear una instancia. Vamos a volverlo "protected" y vamos a crear una variable privada: 'private static' y estática: 'instance', donde vamos a almacenar en sí la instancia. Y ahora vamos a hacer nuestra alternativa al constructor. Creamos un método estático llamado 'getInstance, public static function, getInstance'. Aquí lo que vamos a hacer es verificar si la instancia ya existe, y si no, la creamos. Hacemos con un 'if' y después del 'if' simplemente 'return static, dos puntos, dos puntos, instance'. Entonces vamos a verificar que esta instancia no sea nula. Y en el caso de serlo, simplemente la creamos con 'static, dos puntos, dos puntos, instance igual a new static'. Vamos a poner un mensaje aquí también: 'echo Creando nueva instancia'. Adicionalmente, vamos a volver nuestro método "clone" privado para que tampoco puedan mandarlo a llamar. Vamos a hacerlo de la siguiente forma: 'private function, guion bajo, guion bajo, clone', y simplemente no hacemos nada. Ahora vamos a heredar y a tratar de instanciar nuestra clase. Vamos entonces a crear otra clase que se llame 'DBEngine', que extiende –extends–, hereda de 'DBMock'. Es una clase vacía. Y por último, vamos a tratar de obtener instancias de nuestra clase: 'instance DBEngine, es igual a DBMock, dos puntos, dos puntos, getInstance'. Y vamos a mostrarlo en la pantalla el resultado de esta instancia con 'var_dump', vamos a igualar la variable con igual, igual, igual, y vamos a crear otra instancia para ver si son iguales con 'DBMock, dos puntos, dos puntos, getInstance', listo. Lo vamos a ejecutar en nuestra línea de comandos con 'php DBMock', y listo. Es verdadero porque la instancia sigue siendo la misma. Aunque la mandamos a llamar dos veces, es la misma instancia. Vamos ahora a hacerlo igual de la misma forma, pero ahora con 'instanceDBEngine2'. Y vamos a mandar a llamar a 'DBEngine, getInstance'. Y ahora vamos a igualar la primera instancia con la segunda. Vamos entonces a dar un ''var_dump' de la instancia uno con la instancia dos. Listo. La ejecutamos y simplemente no tiene acceso a la instancia 'DBEngine', es decir, esto no existe en este contexto. Esto nos permite cuidar las instancias que creamos con nuestras clases y, adicionalmente, nos permite usar y compartir la misma instancia en todo momento.

PHP avanzado: herramientas profesionales

Aprende que PHP va mucho más allá que manejo de formularios y páginas web y puedes usar herramientas que hacen que PHP se convierta en una gran opción para aplicaciones robustas.

1:37 horas (24 Videos)
Actualmente no hay comentarios.
 

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.