Creación y uso de excepciones personalizadas con PHP y PHPUnit

Esta lección forma parte del curso avanzado de creación de componentes para PHP y Laravel,

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.

Resolución automática de clases usando Reflection de PHP

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.

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.

Introducción a los contenedores de inyección de dependencias

¡Hola! bienvenido a la lección 3 de la segunda parte del Curso: Crea componentes para PHP y Laravel.

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.

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.

Creación de un mini proyecto web con PHP

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.

Creación y uso de Interfaces y Stubs

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.

Inyección de dependencias

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.

Dependencias y código acoplado

Cuando trabajamos en programación orientada a objetos es normal encontrarse con clases y objetos que interactuan y dependen unos de otros, la idea de ello es aprovechar al máximo las virtudes de cada uno y evitar reescribir código innecesario.

Sin embargo esto nos puede llevar a código que esté innecesariamente «acoplado», es decir objetos y clases que no puedan funcionar sin la presencia de otros objetos y clases.

Esto trae varios problemas, por un lado el código es menos reusable y por otro lado es más difícil de probar y depurar.

En la lección de hoy veremos un ejemplo de esto, mientras avanzamos en la creación de algunas clases base que nos permitirán más adelante comparar código y aprender sobre la inyección de dependencias y otros conceptos más avanzados.

Regístrate para ver ésta y cientos de lecciones exclusivas.

Creación de un nuevo proyecto con Composer y PHPUnit

¡Hola! Bienvenido al nuevo curso Crea Componentes para PHP y Laravel.

Sé que estás impaciente en aprender cómo crear componentes, subirlos a packagist, obtener miles de descargas y estrellas en GitHub y hacerte famoso, nosotros también, pero antes de comenzar, hay muchos conceptos que necesitarás aprender, puesto que no sólo son necesarios para crear un buen componente, sino que también te ayudarán muchísimo a entender mejor Laravel y otros frameworks o herramientas con las que desarrollas a diario.

Quizás aún arrugas la cara cuando oyes la palabra “Facade” o los términos “inyección de dependencias” o “pruebas unitarias” te producen dolor de cabeza. No te preocupes, después de terminado este curso esos y muchos otros paradigmas avanzados te serán familiares y tu nivel como desarrollador aumentará muchísimo.

Regístrate para ver ésta y cientos de lecciones exclusivas.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Suscríbete a nuestro boletín

Recibe consejos útiles, promos y múltiples recursos directamente en tu correo.

Tu nombre y correo serán enviados directamente a MailChimp. No compartiremos tus datos con otras empresas.