¿Qué hay de nuevo en Laravel 5?

La comunidad de PHP recientemente ha sido bendecida con una nueva versión de uno de sus marcos más queridos, Laravel. La versión 5.0.1 es una versión importante, por lo que no solo hay algunas nuevas características disponibles, sino que los fundamentos arquitectónicos del marco también se han modificado en cierta medida. Así que, sin más preámbulos, voy a sumergirme directamente en el marco y mostrarles todas las cosas buenas que la última versión tiene para ofrecer..

1. Estructura del directorio

La estructura de carpetas de un proyecto Laravel ha pasado por una revisión importante. Laravel 5 implementa el estándar de carga automática PSR-4, lo que significa que todas sus clases tienen un espacio de nombre completo. El espacio de nombres predeterminado para su aplicación web es aplicación, que puedes cambiar usando el aplicación php artesanal: nombre mando. 

Sus modelos se encuentran dentro del espacio de nombres de la aplicación predeterminada y están dentro de la carpeta de la aplicación. Los activos, vistas y archivos de idioma de su aplicación están en la carpeta de recursos. Los directorios de proveedores, públicos y de arranque conservan su lugar como en las versiones anteriores del marco, mientras que los directorios de configuración, almacenamiento, base de datos y pruebas se han trasladado a la raíz del proyecto. 

Si miras dentro de la carpeta de la aplicación, notarás muchas clases, pero no te preocupes por eso por ahora, vamos a entrar en eso durante el curso de este artículo.. 

La detección del entorno ha mejorado enormemente. En lugar de todos los directorios de configuración anidados complejos, tiene un .env Archivo en la raíz de su proyecto para cuidar el entorno de la aplicación y todas las variables de entorno. También el php artesano tinker comando ahora utiliza el paquete Psysh en lugar de Boris.

2. Método de inyección

El método de inyección se ha simplificado enormemente. Hasta la versión 4.2, tenía que solicitar el contenedor Inversión de control (IoC) para proporcionar una instancia de clase o crearlo en el constructor de su controlador para hacerlo accesible bajo el alcance de la clase. Ahora, puede declarar el tipo de instancia de clase insinuada en la firma del método del controlador y el contenedor IoC se hará cargo de ello, incluso si hay múltiples parámetros en la firma de la función de su controlador..

3. Contratos

Los contratos son en realidad clases de interfaz disfrazadas. Las interfaces son un método probado y comprobado para eliminar la dependencia de clase y desarrollar componentes de software débilmente acoplados. Generalmente te ayudan a seguir la regla de "depender de las abstracciones, no de las concreciones".. 

Laravel compra en la misma filosofía. La mayoría de los componentes principales hacen uso de estos contratos para mantener el marco acoplado libremente. También puedes utilizarlos en el desarrollo de tu paquete.. 

Por ejemplo, si su paquete requiere almacenamiento en caché, entonces en lugar de usar una clase de caché concreta, puede implementar el Iluminar \ Contratos \ Caché Interfaz y usted será libre de conectar y desconectar la implementación del caché sin cambiar gran parte de su código de paquete. 

Puede preguntarse cómo Laravel se ocupa de determinar la implementación de un contrato específico. Toda esa magia pasa dentro de la Illuminate \ Foundation \ Application.php expediente.

4. Ruta de caché

Artisan tiene una nueva función de caché de ruta. El almacenamiento en caché de rutas acelera enormemente el registro de la ruta de su aplicación, con beneficios de rendimiento claramente visibles. Sin embargo, si su aplicación opera en un pequeño número de rutas, es posible que no vea el impacto que se supone que tiene el almacenamiento en caché, lo que significa que es más adecuado para los casos en que su aplicación tiene una gran cantidad de rutas.. 

Los comandos Ruta php artesanal: caché. y Ruta php artesanal: claro. activar y desactivar el almacenamiento en caché de ruta respectivamente. Una vez que se activa el almacenamiento en caché de rutas, las modificaciones que realice en las rutas de la aplicación no tendrán efecto. El almacenamiento en caché de ruta generalmente se implementará como parte de su proceso de implementación.

5. Ruta de middleware

Middleware se puede utilizar para agregar capas adicionales a sus rutas HTTP. Si desea que el código se ejecute antes de cada ruta o antes de rutas específicas en su aplicación, entonces tal pieza de código es una buena opción para una clase de middleware. 

Por ejemplo, supongamos que desea bloquear un cierto rango de IP de su aplicación para que su aplicación no esté disponible en esa región. En tal caso, deberá verificar la IP del cliente antes de cada solicitud y permitir / rechazar la entrada a su aplicación. Esto será mucho para hacer en las acciones de su controlador, por lo que usará middleware en su lugar. Generar una clase de middleware en app / Http / Middleware / RegionMiddleware.php mediante el uso php artisan make: middleware "RegionMiddleware".

A continuación, puede registrar su middleware en el aplicación / Http / Kernel.php archivo añadiéndolo a la $ middleware formación. También puede adjuntar middleware a rutas específicas agregándolo a la $ routeMiddleware matriz y luego pasarlo en las opciones de ruta.

6. Autenticación

La autenticación forma parte de casi todas las aplicaciones web que desarrolla, y se dedica mucho tiempo a escribir la placa de identificación de autenticación. Este ya no es el caso con Laravel 5. Las migraciones de la base de datos, los modelos, los controladores y las vistas solo deben configurarse para que todo funcione. Laravel 5 tiene un servicio de registrador, que es una parte crucial de esto, listo para usar, sistema de autenticación.

7. Eventos

Se acabaron los viejos tiempos en que solía declarar los eventos de su aplicación como cadenas, porque el objeto del evento ahora está disponible. Puedes crear objetos de eventos usando php artesanal hace: evento y objetos de controlador de eventos utilizando manipulador artesanal php: evento . Todas tus clases de eventos y manejadores van dentro del app / Eventos y app / Handlers / Eventos carpeta respectivamente. 

Una vez que haya creado sus eventos, puede dispararlos por Evento :: fuego (nuevo evento (params)). Para adjuntar oyentes a sus eventos, necesita editar el $ escucha matriz en el app / Providers / EventServiceProvider.php expediente.

8. Comandos

Laravel 5 le permite encapsular su lógica empresarial compleja en objetos de comando simples. 

Por ejemplo, supongamos que tiene una tienda en línea donde los usuarios se registran y compran artículos electrónicos. El proceso de registro puede implicar la verificación de la dirección de correo electrónico y la tarjeta de crédito del usuario.. 

Puede ser tentador volcar todo este código en una acción del controlador, pero no es una buena idea tener un código que funcione solo en el contexto de la solicitud HTTP, ya que es difícil realizar una prueba unitaria debido a las solicitudes HTTP e inflar las acciones del controlador. 

Hacer esto usando comandos te dará varias ventajas. Primero, su código autocontenido será modular y muy fácil de probar. En segundo lugar, dado que Laravel le permite poner en cola los comandos, su lógica empresarial puede ejecutarse de forma asíncrona en segundo plano, lo que es imposible de hacer con las acciones del controlador.

9. Programación de colas y tareas

De forma predeterminada, se proporciona una cola lista para usar con el marco, por lo que no necesita utilizar ningún paquete de terceros. Todo lo que necesitas hacer es configurar la cola y deberías estar listo. Todos tus trabajos en la cola se mantienen en el aplicación / Comandos carpeta. Una vez que haya creado sus comandos en cola, puede simplemente enviarlos a la cola usando Queue :: push (nuevo comando ($ params))

La programación de tareas también se ha mejorado mucho. Anteriormente, tenía que configurar un cron para cada comando de la consola, pero no más. Solo necesitará una única entrada cron y puede programar sus tareas dentro de la aplicación usando una gran cantidad de sintaxis de azúcar.

10. Sistemas de archivos múltiples

Laravel 5 tiene soporte nativo para múltiples sistemas de archivos usando el paquete de terceros Flysystem. Su aplicación puede utilizar almacenamiento local o en la nube por medio de una configuración simple. Solo tendrá que trabajar con la fachada del sistema de archivos, y las operaciones de almacenamiento subyacentes serán atendidas automáticamente. Puede configurar sus opciones de almacenamiento en el config / filesystems.php expediente. En caso de que necesite acceder a todas las opciones de almacenamiento disponibles en su proyecto, puede omitir la fachada del sistema de archivos y trabajar con la fachada del disco directamente.

11. Solicitar objeto

El objeto de solicitud le ayuda a inyectar la autenticación / autorización y la lógica de validación de datos en sus solicitudes. Una vez que haya implementado la lógica de su negocio en el objeto de solicitud, debe escribir la sugerencia en la acción de un controlador, como en el caso de la inyección de métodos.. 

Vamos a descifrar esto usando un ejemplo de código. Ejecutar php artesano hacer: solicitud TutsPlusRequest para generar una clase de solicitud en app / Http / Requests / TutsPlusRequest.php. Al observar el contenido de ese archivo, notará que el artesano ha generado un método de reglas y un método de autorización. Vas a agregar algunas reglas de validación en tu método de reglas.

 'required | email', 'password' => 'required | min: 8'];  // en su función de acción pública del controlador postLogin (\ App \ Http \ Requests \ TutsPlusRequest $ request) // el código aquí no se activará // si las reglas de validación // en la solicitud fallan?>

Desea que el correo electrónico sea un correo electrónico válido y que la contraseña tenga al menos ocho caracteres. Ambos campos son obligatorios. Si cualquiera de estas reglas de validación falla, la acción de su controlador no se ejecutará y el usuario será redirigido a la página de formulario.

12. Elixir

Elixir es una API de GulpJS para Laravel que le ayuda a definir tareas engañosas para sus aplicaciones. Bucear en GulpJS está más allá del alcance de este artículo, pero puede consultar su sitio oficial y Elixir para obtener más información.. 

Un caso de uso típico de GulpJS es reducir / concatenar sus archivos CSS / JS. Sus paquetes tragos residen en el paquete.json archivo en la raíz de su proyecto, mientras que las tareas que deben ejecutarse se especifican en el gulpfile.js expediente. Para aquellos de ustedes que ya están familiarizados con el flujo de trabajo de GulpJS, esto tendría más sentido, ya que Elixir solo lo ayuda a integrar GulpJS en sus aplicaciones Laravel.

13. Laravel Socialite

Socialite es un paquete de primera parte que hace que la integración de la autenticación de terceros en sus aplicaciones web sea muy sencilla. Dado que no está incluido de forma predeterminada, debe insertarlo usando el compositor. Una vez hecho esto, debe configurar los proveedores que desea utilizar en su aplicación. Actualmente, Socialite es compatible con Twitter, GitHub, Google y Facebook..

Cortinas!

Espero que hayas disfrutado al analizar los detalles de Laravel 5. Desde una perspectiva arquitectónica, creo que el marco ha dado pasos gigantescos, lo que te ayudará a mantener el código de tu aplicación web organizado y a liberarte de la pesadilla que es el mantenimiento..

.