Conociendo Laravel: el framework que revolucionó PHP

Laravel

Si siguen ahí después de leer el título quiere decir que todavía no perdieron las esperanzas de encontrar un buen Framework en PHP.

La discusión entre «framework si» o «framework no» es larga y creo que los fundamentos más fuertes de los detractores se basan en las opciones disponibles de hoy en día. Pero en algún momento nos vemos en la necesidad de no reinventar la rueda, sobretodo cuando tenemos que implementar acciones comunes (friendly URLs, manejo de sesiones, manejo de base de datos, etc).

Es por eso que quería hablar de Laravel, un framework que viene tomando mucha fuerza en los últimos meses largos y con el lanzamiento de su version número 4 se posiciona como una opción más que interesante para explorar.

En esta nota vamos a repasar sus puntos fuertes y en notas posteriores ver algunos ejemplos prácticos de como usarlo y los beneficios que tiene.

The basics

El framework posee lo que ya nos imaginamos: Router, Models, Layouts, Views, Controllers, etc. Para los templates utiliza un engine propio que se llama Blade, que tiene algunos helpers copados.

Artisan

Cliente de consola que nos permite ejecutar comandos propios del framework. Es muy versátil, potente e incluso nos permite extenderlo creando nuestras propias tareas para que estén disponibles desde este cliente.

Composer

Desde la última versión, la 4, está disponible directamente desde Composer el nuevo gestor de paquetes y de dependencias de PHP. Esto nos permite modificar y agregar los paquetes que querramos incluso permitiéndonos generar paquetes nuestros, configurarlos en el composer.json e incluirlos en nuestra aplicación con un composer update. Tal es el uso y los beneficios de Composer que Laravel utiliza muchos paquetes de otros frameworks como Symfony (Artisan es una extensión de su consola) entre otros.

Migrations

A esta altura todos utilizamos algún sistema de control de versiones para nuestro código (y si no lo hacemos, ya es hora). Lo que incorpora Laravel es la posibilidad de llevar un control de versiones también de nuestra base de datos. Esto, combinado con un sistema de seeding nos permite tener nuestra aplicación descargada y funcionando en unos pocos comandos. Ejemplo:

$git clone https://github.com/laravel/laravel.git
$composer update

Y para configurar la base de datos:

$php artisan migrate
$php artisan db:seed

Listo! ya tenemos nuestra aplicación descargada, instalada y con su base de datos configurada.

Resources

Desde esta última versión, se incorpora el concepto de resource permitiéndonos programar nuestros controladores como si fueran un API Rest y que sean consumidos de la misma forma. Es decir que para agregar un elemento hacemos un POST /resource, para obtener un listado un GET /resource, para obtener un elemento GET /resource/{id}, etc. Esto nos permite liberar y consumir nuestra aplicación como un API sin tener que modificar nada, y dándonos la posibilidad de integrarla y de que sea integrada por otros sistemas.

Eloquent ORM

Object-Relational Mapping para nuestra base de datos. Nos permite interactuar con nuestra base de datos como si cada tabla fuera un Modelo, respetando más fielmente la división MVC. Es muy fácil de usar, y por sobre todas las cosas maneja una sintaxis muy expresiva para facilitar su lectura y comprensión.

Generators

Una de las cosas que más me gustan por el tiempo que ahorran. Están basados en un paquete que creó Jeffrey Way y que se puede agregar al composer.json para que lo descargue automáticamente al iniciar el desarrollo de nuestra aplicación. Lo que debemos hacer es agregarlo como required:

"require": {
    "laravel/framework": "4.0.*",
    "way/generators": "dev-master"
}

Después de un composer update estamos listos para usarlo. Esto nos va a permitir generar un template de cualquiera de los elementos que necesitemos, ya sea un Model, Controller, Seed, View, Migration, etc.

Un ejemplo práctico para entender la comodidad de usarlo: vamos a crear un resource para gestionar los usuarios de nuestra aplicación:

$php artisan generate:resource usuario --fields="nombre:string,apellido:string,username:string,password:string"

El resultado del comando crea lo siguiente:

  • Vistas para el listado, el detalle, la edición, y el alta
  • Layout general (lo crea si es la primera vez que lo ejecutamos)
  • Modelo del Resource (Usuario)
  • Controlador del Resource con todos sus métodos
  • Migración para crear la tabla con todos sus métodos de gestión.
  • Modifica el archivo routes.php (que contiene el mappeo de todas las rutas) para agregar el resource
  • Crea la clase para hacer el Unit Testing.

En resumen, una vez que lo terminemos, podemos acceder a https://localhost/usuarios y vamos a tener un ABM absolutamente funcional para extenderlo y/o modificarlo de la forma que querramos. Esta es una excelente forma de acortar los tiempos iniciales de desarrollo sobretodo para cuando necesitamos testear la implementación de forma rápida para poder tomar mejores decisiones.

Y mucho más

Quedaron muchas cosas interesantes afuera, como que viene con un driver para utilizar storage Redis, soporte para Unit Testing, Validations, etc. Esto es solo un muestreo de algunas de las features. Pueden ver el resto de la magia en la documentación oficial.

En las próximas semanas desarrollaremos nuestra primer aplicación usando Laravel.

4 opiniones en “Conociendo Laravel: el framework que revolucionó PHP”

  1. Hola, se puede usar laravel en un servicio de latincloud de los de cloud advance? Gracias, pero no pude ver ningún tutorial que explique como montarlo en su servicio, en localhost lo puedo hacer andar, pero cuando hago la migración de la base de datos y quiero replicar esto en el server de producción?

  2. Hola Hugo! Te pedimos que por favor te contactes con soporte técnico para que un asesor pueda responder a tu pregunta y guiarte en los pasos necesarios de configuración. Podes hacerlo por teléfono, chat o ticket ingresando en latincloud.com/contacto

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *