Continuando con nuestro Curso de creación de componentes para PHP y Laravel, en la lección de hoy aprenderemos sobre los patrones de diseño, específicamente el patrón (o también llamado anti patrón) Singleton pero ¿Qué es un patrón de diseño?.
Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Los patrones de diseño se utilizan con la finalidad de estandarizar la forma en que desarrollamos el código ofreciendo soluciones reusables. Es importante señalar que el uso e implementación de un patrón de diseño no es obligatorio, pero en algunos casos es recomendado como parte de las buenas prácticas.
En este caso, cómo lo mencionaba anteriormente veremos qué es y como implementar el patrón Singleton.
Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Hoy en día, frameworks como Symfony o Laravel trabajan para que sus componentes sean lo más desacoplados que sea posible, y pueda reemplazarse la implementación de ciertas clases por otra. Logrando así un código más escalable y flexible. Para ello, ambos frameworks se apoyan muchísimo en el patrón de inyección de dependencias. Este patron es tan importante, que hemos dedicado toda la parte 2 de nuestro curso de creación de componentes para PHP y Laravel, a hablar de él, incluso ¡Estamos creando nuestro propio contenedor de inyección de dependencias!
Con el patrón de inyección de dependencias, los objetos, de los cuales una clase depende, son inyectados a través del constructor o de métodos setters. Pero no todas las clases dependen únicamente de otras clases, muchas veces, por ejemplo, cuando utilizamos una clase para conectarnos a una base de datos o API, esta necesita de valores escalares, como pueden ser las cadenas para conectarse a una URL o host, un nombre de usuario y una clave.
El día de hoy implementaremos este feature dentro de nuestro contenedor, mientras aprendemos más sobre el uso de Reflection en PHP.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Una excepción es un evento inesperado que ocurre durante la ejecución de un programa e interrumpe la ejecución normal del mismo.
Una excepción es lanzada desde un método cuando las condiciones para la ejecución normal de dicho método no se cumplen, y luego puede ser atrapada en algún lugar del sistema utilizando un bloque try / catch.
La idea cuando estamos creando nuestros métodos y necesitamos crear una excepción, es crear una clase personalizada cuyo nombre debe describir qué componente produjo el error o cuál fue el error.
Además, aunque se produzca una excepción no «atrapada» en nuestro código, podemos, de igual forma, escribir una prueba con PHPUnit para probar este comportamiento.
Todo esto lo veremos en detalle en la lección de hoy:
Regístrate para ver ésta y cientos de lecciones exclusivas.
Si estás siguiendo este curso, muy probablemente ya te guste PHP; aún así, es difícil ignorar la gran cantidad de críticas que ha recibido este lenguaje desde hace varios años.
Pero estoy convencido de que el 99% de esas personas sólo conocieron PHP 4, quizás un poco de PHP 5.0, y no tienen ni idea de las novedades de PHP 7 o de features como el que aprenderemos en la clase de hoy.
En esta clase, vamos a aprender sobre el uso de Reflection con PHP, el cuál nos provee de un API para hacerle ingeniería inversa a nuestras clases.
Con las diferentes clases provistas por Reflection como: ReflectionClass, ReflectionMethod, ReflectionParameter, entre otras, vamos a poder obtener toda la información de las clases, objetos, funciones métodos, inclusive comentarios de nuestra aplicación. Por ejemplo, ¿Tiene esta clase o no un constructor? ¿Requiere este método o no de parámetros y cuáles son? Etc.
Laravel, utiliza este feature de PHP para implementar la resolución automática de clases, a través de su contenedor de inyección de dependencias; es decir, hace posible que un controlador como éste (que vimos en el curso crea tu primera aplicación con Laravel), sea instanciado automáticamente por el framework -a pesar de sus dependencias- y obtengamos el TicketRepository ya cargado como por arte de magia:
class TicketsController extends Controller {
private $ticketRepository;
public function __construct(TicketRepository $ticketRepository)
{
$this->ticketRepository = $ticketRepository;
}
}
Pero no es magia y hoy te enseñaré exactamente cómo funciona ¿Estás listo?
Regístrate para ver ésta y cientos de lecciones exclusivas.
Duilio Palacios 29/08/2015 PHP, Programación orientada a objetosComentarios desactivados en Creación de un contenedor de inyección de dependencias para PHP
Bienvenidos a la cuarta lección de la segunda parte de este Curso de creación de componentes para PHP y Laravel, en esta ocasión vamos a aprender a crear un contenedor de inyección de dependencias que pueda ser reusado en cualquiera de nuestros proyectos.
Conocimientos previos
En esta lección, primero crearemos el diseño del código escribiendo las pruebas unitarias con PHPUnit, y a partir allí iniciaremos el desarrollo del código, por ello te recomendamos que hayas visto la parte 1 de este mismo curso, antes de continuar.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Duilio Palacios 28/08/2015 PHP, Programación orientada a objetosComentarios desactivados en Introducción a los contenedores de inyección de dependencias
Para reducir la cantidad de código que necesitamos cuando implementamos el patrón de inyección de dependencias, debemos crear otro objeto llamado contenedor de inyección de dependencias, el cuál será un objeto que conocerá cómo instanciar y «ensamblar» otros objetos. De esta manera podremos extraer la lógica requerida para crear el access handler y demás clases de nuestro proyecto demo a otra clase, como veremos a continuación…
Regístrate para ver ésta y cientos de lecciones exclusivas.
Duilio Palacios 27/08/2015 PHP, Programación orientada a objetosComentarios desactivados en Uso del patrón de inyección de dependencias dentro de un proyecto
En esta lección 2 de la segunda parte del curso Crear componentes con PHP y Laravel, vamos a empezar implementar el Access Handler en nuestro proyecto y nos encontraremos de frente con los problemas de usar el patrón de inyección de dependencias. Poco a poco iremos analizando las causas y posibles soluciones que nos permitirán implementar código bien diseñado de una manera fácil.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Bienvenido a la segunda parte del curso Crea componentes para PHP y Laravel.
En esta lección, nos apartaremos un momento de lo que hemos aprendido, sólo para preparar un escenario donde podamos implementar el AccessHandler realizado en lecciones anteriores y profundizar en la implementación del patrón de inyección de dependencias en todos los objetos, sin que se vuelva cuesta arriba instanciarlos y usarlos.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Cuando trabajamos con la programación orientada a objetos hay términos que debemos entender y uno de ellos es el polimorfismo, el cual es la capacidad de que un mismo método pueda tener distintos comportamientos dependiendo del contexto en el que se está ejecutando. Esto en PHP se puede lograr por ejemplo con el uso de interfaces.
En esta lección 4 del curso Crea componentes para PHP y Laravel aprenderás a crear e implementar interfaces así como stubs que te ayudarán a hacer el código más reusable y desacoplado, además de que facilitará la implementación de las pruebas unitarias.
Esto nos permitirá ya no trabajar con un archivo para manejar las sesiones, sino que usaremos un nuevo manejador (driver) con el cual podemos cargar datos de sesión con un simple array. Esto es un ejemplo muy sencillo de cómo funciona el manejador de Sesiones en frameworks como Symfony o Laravel.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Esta es la lección 3 del curso Crea componentes para PHP y Laravel.
En esta oportunidad se tratará un punto importante de la programación orientada a objetos, no sólo en PHP sino en general, como es la inyección de dependencia que servirá de mucha ayuda para desacoplar las clases creadas en la lección anterior: AccessHandler y sobretodo SessionManager.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Styde usa cookies para guardar tus preferencias y para seguimiento anónimo AceptarLeer más
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.