¡Ya disponible Laravel 5.5!

Este artículo es una traducción de Laravel 5.5 LTS is Now Released.
Nuevo release de Laravel 5.5

La nueva versión de Laravel 5.5 oficialmente ha salido a la luz, este lanzamiento se encuentra cargado de muchas mejoras y nuevas funcionalidades. Esta es la nueva versión LTS, por la cual tendrá soporte extendido para la corrección de errores durante dos años, y arreglos de seguridad durante tres.

En Laravel News nos han dejado un vídeo resumen de las nuevas características.

Taylor Otwell describió recientemente sus pensamientos sobre Laravel 5.5 en este tweet:

Laravel 5.5 es un Release LTS

Laravel 5.5 es la nueva versión de soporte a largo plazo (LTS) de Laravel (siendo el último 5.1). Las versiones LTS reciben correcciones de errores durante dos años y arreglos de seguridad durante tres años.

Paquete Whoops

Para los que pudieron utilizar Laravel en su version 4 podran recordar que whoops proporcionaba una manera elegante para el momento frustrante dentro de la depuración los errores. El paquete whoops vuelve a Laravel 5.5.

Ya habíamos hablado de esto anteriormente.

Dumping de Colecciones.

Otra gran característica para la depuración (que se ha visto anteriormente como un paquete o un macro) es un método para el dumping de una colección:

Recordemos que el helper  dd() nos permite imprimir una salida y mata la aplicación.

Representación de excepciones

A partir de ahora las excepciones pueden renderizar una respuesta si definen un método público “response”. Normalmente, en las versiones anteriores de Laravel se podia agregar una comprobación en método App\Exceptions\Handler::render() y enviar de forma condicional una respuesta basada en el tipo de excepción.

En 5.5, puede lanzar la excepción y  responder sin agregar lógica adicional en el controlador:

También puede implementar la interfaz Responsable en las clases de excepciones, y Laravel responderá automáticamente.

La Interface Responsable

La interfaz Responsable es otra de las novedades. Una clase que implementa la interfaz puede ser devuelta desde un método controlador. El router ahora comprueba si hay una instancia de Responsable cuando se prepara la respuesta de Illuminate\Routing\Router.

A continuación se muestra un ejemplo, dejando los detalles de la respuesta en el objeto NewSongResponse:

Esto es lo que podría parecer la clase implementando la interfaz Responsable para crear una nueva canción:

En este sencillo ejemplo, se puede responde automáticamente en JSON si realiza una solicitud a través de AJAX y, por defecto, responde con una redirección a la ruta songs.show route.

Método Validación de Request

En versiones anteriores de Laravel pasarías la instancia de la petición al metodo $this->validate() en un controlador.

Ahora, se puede llamar a “validate” el objeto Request:

Otro beneficio agradable de este estilo de validación es que el valor de retorno actúa como Request::only(), devolviendo solamente las claves proporcionadas en la llamada. Devolver sólo las claves validadas es una convención excelente para usar, evitando Request::all().

 Nuevos Objetos y Closures para las reglas de validación personalizadas

Mi característica favorita de Laravel 5.5 es la de los nuevos objetos y closures de las reglas para las validaciones personalizadas. La creación de un objeto para regla personalizada es una excelente alternativa a la creación de reglas personalizadas con Validator::extend(que todavía se puede usar), porque queda más claro dónde se localiza la lógica de las reglas. Un objeto de regla de validación podría tener este aspecto:

Un ejemplo del uso de esta regla de validación podría ser:

El Closure toma el atributo, el valor y un parámetro de error al que llama si falla la regla de validación. El Closure es una buena forma de experimentar con una validación personalizada antes de extraerla a un objeto de regla dedicado o para las necesidades de validación única.

Para crear objetos de reglas de validación personalizados, puede utilizar el nuevo mandato make:rule:

Directivas Blade para Auth y Guest

Normalmente, se puede utilizar algo como lo siguiente para comprobar si hay un usuario autenticado en Blade:

Ahora puede utilizar las siguientes directivas para lograr lo mismo:

Presets para Frontend

Cuando está iniciando un nuevo proyecto, se proporciona un scaffolding para Vue.js  de forma predeterminada. En Laravel 5.5 ahora puede elegir entre unos cuantos presets y quitar todo el scaffolding de frontend  con el comando “preset” de artisan en Laravel 5.5.

Si verifica la documentación, se puede observar ver que permite elegir “ninguno”, “bootstrap”, “vu” o “react”:

Archivos de Fabrica Separados

Los archivos de fábrica (o factory mejor conocido), los cuales si no sabes son aquellos que se utilizan para crear datos de pruebas de los modelos, que normalmente se utilizan en los Seeder para generar datos de prueba con ellos, se definieron previamente en un archivo  llamado ModelFactory.php. Ahora, se puede crear diferentes archivos para cada modelo. Se puede crear un archivo de fábrica cuando cree un nuevo modelo con:

También puede crear un archivo de fábrica directamente con “make: factory”:

El Comando migrate:fresh

El nuevo comando de migración “migrate:fresh” 5.5 es una buena manera para crear una base de datos limpia en un entorno de desarrollo. Este elimina todas las tablas de la base de datos y luego corre las migraciones.

Puede que te suene familiar con el comando “migrate:refresh”, pero este lo que hace es realizar un rollback a las migraciones y luego las vuelve a ejecutar. Usualmente este nuevo comando se utiliza en un entorno de desarrollo donde quieras eliminar todas las tablas, obtener una base de datos fresca y correr las migraciones.

El Trait “RefreshDatabase”

En el entorno de los Tests o pruebas, el trait “RefreshDatabase” es la nueva manera de migrar bases de datos durante pruebas. Este nuevo trait toma el mejor enfoque para migrar tu base de datos de prueba dependiendo en si usas una base de datos en-memoria o tradicional. Los traits “DatabaseTransactions” y “DatabaseMigrations” aun están disponibles en el 5.5, permitiéndote actualizar sin tener que utilizar el rasgo “RefreshDatabase”.

El método “WithoutExceptionHandling()”

Para el caso de pruebas se hereda el método “withoutExceptionHandling()”, el cual te permite desactivar el manejo de excepciones para una prueba. Desactivar esto te permite obtener la excepción en tu prueba y verificarla en vez de obtener la respuesta del manejador de excepciones, Edemas es una herramienta de depuración muy útil para cuando tu entorno de pruebas esta haciendo algo que no te esperas y quieres ver el verdadero error.

Automatic Package Discovery

La ultima característica que veremos sera el descubrimiento automático de paquetes. Mientras que usualmente los paquetes de laravel no son difíciles de instalar, la detección de paquetes significa que no tienes que configurar proveedores o alias. Puedes desactivarla para paquetes específicos.

Más información sobre Laravel 5.5

Para obtener una visión más detallada puedes revisar nuestro contenido de Laravel 5.5 el cual iremos ampliando en el transcurso de los dias. Además, tanto Laracasts (ingles) como Styde (español) tienen una serie completa disponible en todas estas características. También, echa un vistazo a la documentación oficial, notas de lanzamiento y la guía de actualización.

Si logran comparar, no es una traducción exacta sino que hemos adaptado un poco la traducción para agregar algunas cosas extras y/o hacer que se entiendan mejor algunos detalles. Si tienen alguna sugerencia recuerden que pueden hacerlo desde el Slack. Damos la gracias a @kevin que desde Slack me apoyo durante la traducción para sacar el articulo mas rápido.

Comparte este artículo

Entra en la discusión y deja tu comentario

Veces