Ha llegado la nueva versión de Laravel Framework LTS 5.5

Por Juan Gonzales Quispe
Ha llegado la nueva versión de Laravel Framework LTS 5.5

En este artículo te contaremos las novedades de la última versión del framework Laravel LTS 5.5.

Quizás tú te estés preguntando “¿Otra versión más?” Pero a diferencia de versiones anteriores como la 5.1., esta es estable. ¿Qué significa? Que podremos utilizarla para nuestros proyectos de producción, así de simple.

Nuestro amigo Taylor trabaja bajo la convención de versiones para una comunicación más real del alcance de sus cambios. Por ello, vemos pequeñas versiones tan seguido, y para sus componentes opcionales como (cashier, valet, socialite, etc), utiliza paragm.minor.patch, *lanzamientos de parches y cambios que son compatibles con versiones anteriores. Puedes leer más en http://semver.org/

Esta nueva versión estable proporciona durante 2 años correcciones menores a errores, además de revisiones de seguridad para 3 años. Esto nos asegura su uso a una escala profesional dentro de nuestros proyectos.

Entre las mejoras que nos trae Laravel 5.5 LTS tenemos:

  • La auto-detección de paquetes.
  • Registros automáticos de los comandos de consola.
  • Nuevos presets de frontend.
  • Encadenamiento de trabajos en cola.
  • Reglas de validación.
  • Notificaciones bajo demanda.
  • Manejo de excepciones personalizadas y más sencillas de utilizar.
  • Solicitud de validación
  • Bloqueos para los controladores de memoria caché (MEMCACHED Y REDIS).
  • Mejoras a nuestra plantilla blade.
  • Nuevos métodos Route::view y Route::redirect
  • Mejora en el soporte para proxys de confianza.

Laravel 5.5 convenientemente para nosotros se lanza junto con LARAVEL HORIZON, un hermoso tablero de colas. Puedes ver más en https://horizon.laravel.com/

AUTO-DETECCION DE PAQUETES:

Laravel 5.5 LTS puede detectar y registrar automáticamente paquetes de servicios y fachadas.

Procedimiento en el pasado:

  1. Instalación del paquete via composer.
  2. Añadir las dependencias a la configuración del service provider.
  3. Añadir las fachadas a la configuración del service provider.

Procedimiento actual:

  1. Instalar el paquete via composer. FIN.

El cambio viene del lado del desarrollador de paquetes ya que él será el que deba añadir estas dependencias al composer.json, de la siguiente manera:

"extra": { "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" ] } },

REGISTROS AUTOMÁTICOS DE LOS COMANDOS DE CONSOLA.

Cuando creamos comandos por consola lo que teníamos que hacer es registrar ese comando en nuestro archivo kernel.php, pues ahora nos han simplificado el trabajo, existe un método load que escanea el directorio de comandos y lo registra automáticamente.

protected function commands(){
    $this->load(__DIR__.'/Commands');
}

NUEVOS PRESETS DE FRONTEND

Laravel 5.5 nos permite intercambiar Vue por React scaffoldin usando un simple comando:

php artisan preset react

o deshabilitar los dos:

php artisan preset none

Estos comandos solo deben utilizarse en proyectos nuevos.

ENCADENAMIENTO DE TRABAJOS EN COLA.

Ahora puedes poner en cola trabajos que deben ejecutarse de forma secuencial.

Para ellos solo utilizaremos el método withChain.

ProvisionServer::withChain([
    new InstallNginx,
    new InstallPhp
])->dispatch();

REGLAS DE VALIDACIÓN

Con el comando php artisan make:rule NombreDeLaValidacion, Artisan generará una nueva regla de validación que podremos utilizar para validaciones personalizadas en nuestra aplicación.

Principalmente trabaja bajo dos métodos passes* aplicamos las reglas y message* controlamos los mensajes de error para la validación.

NOTIFICACIONES BAJO DEMANDA

Si queremos enviarle una notificación a un usuario que no tenemos registrado en nuestra aplicación, lo podemos hacer utilizando un route notification: Notification:route, por ejemplo:

Notification::route('mail', '[email protected]')
            ->route('nexmo', '5555555555')
            ->send(new InvoicePaid($invoice));

Estaríamos enviando un email y un sms.

MANEJO DE EXCEPCIONES PERSONALIZADAS Y MÁS SENCILLAS DE UTILIZAR.

Usted ahora puede crear excepciones y personalizarlas con una respuesta adecuada, definiendo en el método render sus excepciones. Además, para personalizar la lógica de informes, se puede utilizar el método report de la clase:

namespace App\Exceptions;
use Exception;
class SpecialException extends Exception {
  public function report(){
  }
  public function render($request) {
        return response(...);
  }
}

SOLICITUD DE VALIDACIÓN

Entre las múltiples opciones que nos da el objeto Request, ahora también nos permite hacer una validación como lo hacía nuestra capa de form request.

use Illuminate\Http\Request;
Route::get('/comment', function (Request $request) {
    $request->validate([
        'title' => 'required|string',
        'body' => 'required|string',
    ]);
});

MEJORAS A NUESTRA PLANTILLA BLADE

Blade proporciona ahora un método Blade::if que permite definir directivas condicionales personalizadas. Estas nuevas directivas las podremos registrar dentro del método boot en AppServiceProvider.

use Illuminate\Support\Facades\Blade;
public function boot() {
    Blade::if('env', function ($environment) {
        return app()->environment($environment);
    });
}

Una vez que se ha definido el condicional personalizado, podemos utilizarlo fácilmente en nuestras plantillas:

@env('local')
@else
@endenv 

También tenemos un nuevo método para comprobar el estado de autenticación del usuario, *nos olvidamos el Auth::check().

>@auth
    // The user is authenticated...
@endauth
@guest
    // The user is not authenticated...
@endguest

NUEVOS MÉTODOS ROUTE::VIEW Y ROUTE::REDIRECT

Explicación simple: si quieres hacer una redirección, lo puedes hacer directamente desde una ruta.

Route::redirect('/here', '/there', 301);

Si necesitas renderizar una vista, olvídate de crear un nuevo controlador o usar la ruta como un closure, puedes hacerlo utilizando Route::view.

Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

¿Te gustó el tutorial?

Ayúdanos a llegar a más personas

Juan Gonzales Quispe

Juan Gonzales Quispe