Introducción

¿Qué es Laravel?

Laravel es un framework de código abierto para el desarrollo de aplicaciones web en PHP 5 que posee una sintaxis simple, expresiva y elegante. Fue creado en 2011 por Taylor Otwell, inspirándose en Ruby on Rails y Symfony, de los cuales ha adoptado sus principales ventajas.

Laravel facilita el desarrollo simplificando el trabajo con tareas comunes como la autenticación, el enrutamiendo, gestión sesiones, el almacenamiento en caché, etc. Algunas de las principales características y ventajas de Laravel son:

  • Esta diseñado para desarrollar bajo el patrón MVC (modelo - vista - controlador), centrándose en la correcta separación y modularización del código. Lo que facilita el trabajo en equipo, así como la claridad, el mantenimiento y la reutilización del código.

  • Integra un sistema ORM de mapeado de datos relacional llamado Eloquent aunque también permite la construcción de consultas directas a base de datos mediante su Query Builder.

  • Permite la gestión de bases de datos y la manipulación de tablas desde código, manteniendo un control de versiones de las mismas mediante su sistema de Migraciones.

  • Utiliza un sistema de plantillas para las vistas llamado Blade, el cual hace uso de la cache para darle mayor velocidad. Blade facilita la creación de vistas mediante el uso de layouts, herencia y secciones.

  • Facilita la extensión de funcionalidad mediante paquetes o librerías externas. De esta forma es muy sencillo añadir paquetes que nos faciliten el desarrollo de una aplicación y nos ahorren mucho tiempo de programación.

  • Incorpora un intérprete de línea de comandos llamado Artisan que nos ayudará con un montón de tareas rutinarias como la creación de distintos componentes de código, trabajo con la base de datos y migraciones, gestión de rutas, cachés, colas, tareas programadas, etc.

MVC: Modelo - Vista - Controlador

El modelo–vista–controlador (MVC) es un patrón de arquitectura de software que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario. Este patrón de arquitectura de software se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.

De manera genérica, los componentes de MVC se podrían definir como sigue:

  • El Modelo: Es la representación de la información con la cual el sistema opera, por lo tanto gestiona todos los accesos a dicha información, tanto consultas como actualizaciones. Las peticiones de acceso o manipulación de información llegan al 'modelo' a través del 'controlador'.

  • El Controlador: Responde a eventos (usualmente acciones del usuario) e invoca peticiones al 'modelo' cuando se hace alguna solicitud de información (por ejemplo, editar un documento o un registro en una base de datos). Por tanto se podría decir que el 'controlador' hace de intermediario entre la 'vista' y el 'modelo'.

  • La Vista: Presenta el 'modelo' y los datos preparados por el controlador al usuario de forma visual. El usuario podrá interactuar con la vista y realizar otras peticiones que se enviarán al controlador.

Novedades en la versión 5

En Laravel 5 se han incluido un montón de novedades y cambios con respecto a la versión anterior. Si vienes de la versión 4 y quieres actualizar tus proyectos a la nueva versión puedes seguir la guía de actualización de su página: http://laravel.com/docs/5.7/upgrade. Según el proyecto, en ocasiones será más sencillo empezar desde cero y trasladar el código que modificar el proyecto anterior. Si seguimos la guía podremos actualizar nuestros proyectos pero es recomendable que antes revises toda la nueva documentación ya que hay muchas nuevas funcionalidades que podemos aprovechar.

Algunas de las novedades que se incluyen en Laravel 5 son:

  • Han cambiado completamente la estructura de carpetas, todo o casi todo ha cambiado de sitio. La nueva estructura está pensada para separar o modularizar mejor nuestro código y para agrupar mejor las clases de código relacionado.

  • Se ha incluido el espacio de nombres para organizar y cargar el código. En la versión anterior todo estaba en el espacio de nombres global. En esta nueva versión se recomienda separar nuestro código bajo distintos espacios de nombres según su funcionalidad y después requerirlos en las clases que lo utilicen.

  • Los filtros, que antes estaban todos mezclados en un único fichero, se han pasado a un nuevo tipo de clase llamada "Middleware", la cual incluye también nuevas funcionalidades.

  • Mediante un comando de Artisan es posible cachear las rutas de nuestra aplicación, esto, según la documentación, llega a acelerar hasta 100x la carga.

  • En Artisan también se han añadido otros métodos que nos facilitarán la generación de código como controladores, modelos, etc.

  • Inyección de dependencias en controladores, vistas y otros elementos, lo cual nos creará un código más limpio, modular, fácil de mantener, y con un bajo acoplamiento entre sus componentes.

  • Han mejorado el sistema para la gestión y autenticación de usuarios, incluyendo más funcionalidades como el throttling, OAuth o políticas de autorización.

  • Han incluido mejoras en el sistema de colas, permitiendo definirlos como si fueran comandos de Artisan y después, de una forma muy sencilla, crear tareas repetitivas o programadas sobre ellos.

  • El sistema de entornos de configuración también ha cambiado completamente. Ahora en lugar de usar carpetas anidadas para cada entorno se utiliza el sistema "DotEnv" a partir de un único fichero con la configuración de cada usuario o entorno centralizada.

  • Se han incluido paquetes para facilitarnos la gestión de suscripciones y pagos (Cashier), para trabajar con los assets (Elixir) y para la conexión mediante OAuth con servicios como Facebook, Twitter, Google o GitHub (mediante Socialite).

Además, en la nueva versión de Laravel se han adoptado dos nuevos estándares: PSR-4 (http://www.php-fig.org/psr/psr-4/) para la carga automática de clases a partir de su ruta de archivos, y PSR-2 (http://www.php-fig.org/psr/psr-2/) como guía de estilo del código fuente.