Como vimos en las lecciones sobre la interfaz ArrayAccess no podíamos probar la implementación de esta interfaz directamente con la clase Model. Debido a que la clase Model por ser una clase abstracta no se puede instanciar directamente. Cuando esto ocurre, la solución más común es crear una clase que extienda de la clase abstracta. Sin embargo a partir de PHP 7 podemos sacarle provecho a un nuevo tipo de clase llamada Clase Anónima y esto es lo que vamos a aprender en esta lección: el uso de clases anónimas en pruebas unitarias.
Regístrate para ver ésta y cientos de lecciones exclusivas.
En esta segunda parte acerca de la interfaz ArrayAccess estudiaremos cómo implementar los métodos offsetExists, offsetSet y offsetUnset para completar la funcionalidad de acceso de array en nuestra clase de prueba. Además seguiremos utilizando PHPUnit y pruebas automatizadas para comprobar nuestro progreso en el desarrollo de la funcionalidad y veremos algunos tips sobre cómo nombrar y especificar los métodos de nuestras pruebas unitarias.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Con PHP, es posible interactuar con un objeto como si éste fuese un array, y esto lo podemos lograr de forma muy sencilla implementando la interfaz ArrayAccess. A partir de esta lección aprenderás cómo usar esta interfaz de forma detallada, para agregar esta funcionalidad a la clase Model que hemos venido usando. Además vamos a aplicar los conocimientos de la lección 27 (Desarrollo de clases y métodos con pruebas automatizadas) para crear esta funcionalidad con el apoyo de una prueba unitaria escrita en PHPUnit.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Como hemos visto a lo largo del curso, las pruebas automatizadas son una forma de garantizar que la aplicación está funcionando correctamente. De manera que podemos hacer los cambios que creamos necesarios pues nos indicarán cualquier posible fallo en un feature que esté cubierto por dichas pruebas. En esta lección nos apoyaremos en ellas para refactorizar el código ya desarrollado.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Una de nuestras metas como desarrollador profesional es construir un código limpio, fácil de mantener y reusable. Sin embargo, es común que tengamos controladores que se ocupan de muchas tareas y a veces repetidas haciendo que sean extensos o complejos. Para tales casos, puede ser conveniente usar una clase especial de Laravel llamada Form Request que permiten separar la lógica de validación de datos (validación, mensajes de errores, autorización de usuarios y redirección en caso de fallar) de la lógica del controlador. Esta clase intercepta la solicitud o request y valida los datos que vienen de una petición HTTP antes de pasar al controlador. En este tutorial aprenderemos cómo trabajar con Form Request:
Postmark es una plataforma de envío de emails transaccionales que cuenta con una API muy fácil de implementar, especialmente si trabajas con Laravel. En este post veremos cómo implementar este servicio a nuestras aplicaciones de Laravel utiilzando Mailbles y aplicando Test Driven Development.
Cuando trabajamos con ORMs -como Eloquent- obtenemos la ventaja de hacer consultas de modelos relacionados fácilmente pero con la desventaja que no sabemos a simple vista cómo se están haciendo dichas consultas. Laravel por defecto, realiza «lazy loading» o una carga de los datos de modelos relacionados solo cuando accedes a ellos. Esto produce que se hagan N consultas extra por la cantidad de registros que se relacionan con el otro modelo. Son consultas adicionales que se hacen a la base de datos y no importan mucho cuando estamos desarrollando pero cuando tenemos la aplicación en producción podría afectar el desempeño. En la lección de hoy veremos cómo podemos verificar las consultas ejecutadas por Eloquent / Fluente y cómo solucionar este problema usando Eager Loading.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Durante las últimas lecciones hemos creado filtros para el listado de posts de la aplicación. En esta lección trabajaremos en otro tipo de listado, el cual es el que permitirá filtrar solo los posts propios del usuario conectado. Además, refactorizaremos el controlador encargado de mostrar los listados, entre otros detalles.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Cuando tenemos variables que queremos mostrar en varias vistas, lo ideal es poner en práctica el principio DRY «Don’t repeat yourself» y enviar dichas variables desde una clase particular y así evitar recargar los controladores con código repetido. Este tipo de clases en Laravel se llaman View Composers y en esta lección veremos cómo hacer uso de ellas en nuestro proyecto.
Regístrate para ver ésta y cientos de lecciones exclusivas.
Siguiendo con la refactorización del listado de posts de la aplicación, nos encontramos con que nuestro controlador PostController tiene algunas funciones que no son acciones sino helpers. Esto puede crear confusión, por lo que en esta lección la dedicaremos a implementar un tipo de controlador disponible desde Laravel 5.4 conocido como Single Action Controller o controladores de una sola acción. Veamos a continuación:
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.