Laravel - En Español

Laravel, uno de los frameworks PHP más poderosos


Esté artículo en Inglés.


¿Por qué Laravel?

Es común que como programador sea necesario tomar un framework poco conocido o totalmente nuevo. Nada mejor que hacerse de una herramienta que ha pensado en la mayoría de las cosas que se deben usar con frecuencia (o no, pero que son muy útiles). Incluso cosas en las que nunca has pensado, y que, además, son resueltas de una forma fácil e intuitiva. Por otra parte, es también relevante que su documentación realmente sea una ayuda, y no algo complicado y difícil de asimilar. Éste es el caso de Laravel, un framework muy completo, muy intuitivo, muy bien documentado, fácil de utilizar, y que incorpora herramientas muy actuales, que facilitan el proceso del desarrollo de una excelente manera.

Voy a comenzar describiendo algunas de sus facilidades, por supuesto, desde un punto de vista personal, desde la experiencia de trabajo.

Aspectos Fundamentales

Instalación

Una instalación bastante sencilla, con apenas unos requisitos:

  • PHP >= 5.6.4

  • OpenSSL PHP Extension

  • PDO PHP Extension

  • Mbstring PHP Extension

  • Tokenizer PHP Extension

  • XML PHP Extension

  • Composer

  • Node

El punto más crítico es el PHP5.6 porque su instalación varía de forma importante dependiendo del sistema operativo en el cual se va a trabajar, particularmente yo desarrollo en Ubuntu/Debian y el servidor de producción CentOS y en cada uno de ellos instalar PHP5.6 toma sus procesos muy particulares, pero sin grandes complicaciones.

Iniciar el proyecto Laravel es tan simple como una sentencia en consola, donde todo el trabajo lo hace composer:

composer create-project --prefer-dist laravel/laravel my_project

Configuración

Laravel no requiere grandes configuraciones, el punto más crítico es el Application Key, para asegurar los valores en sesión y cualquier otra información que deba estar encriptada.

Es muy cómodo cambiar el timezone para el trabajo con fechas y los "locale" para internacionalización.

Debo resaltar que los archivos de configuración para los distintos aspectos de la aplicación están bien separados y su documentación es muy completa. Algunos comentarios de los archivos de configuración:

  • App, Auth, Database, Cache, Session: Como en otros frameworks, estos aspecto son muy sencillos de configurar. Podemos trabajar con sqlite, mysql y postgresql, podemos fácilmente tener múltiples conexiones y bases de datos intercambiables en cualquier momento.

  • Mail: Un punto importante es cuando queremos trabajar con envio de mails; Laravel incorpora de una manera muy simple herramientas como Mailgun, Amazon SES, Mandrill, Sparkpost, entre otros.

  • Services: Me encanta que se incluye Stripe para manejo de pagos en línea.

  • Filesystems: Nuestro almacenamiento en la nube con s3 es simple y fácil de incorporar. También tenemos ftp y rackspace, excelente.

  • Broadcasting: Eventos, notificaciones, algo muy útil; incorpora pusher, redis y log (archivo local).

  • Queue: Simplemente maravilloso y podemos manejar colas con: database (base de datos local), Beanstalkd, Amazon SQS, Redis.

Los puntos que más me encantaron: el sistema de notificaciones, colas y sistema de archivos, cosa que no siempre es fácil de implementar. Laravel lo hace muy sencillo.

Características resaltantes

artisan

"Artisan is the command-line interface included with Laravel. It provides a number of helpful commands that can assist you while you build your application."

Y realmente son muy útiles, a continuación unos pocos ejemplos:

  • make:auth: Para tener registro de usuarios, recuperación de clave, login, logout entre otros.

  • make:migration: Para construir nuestras tablas y modificaciones de estas.

  • make:seeder: Para poder alimentar nuestra base de datos con data de prueba o datos iniciales.

  • migrate:refresh: Muy útil cuando construimos nuestra base de datos, para mantenerla actualizada y enviar los cambios recientes.

  • make:model y make:controller: Para construir una base de nuestros modelos y controladores.

  • make:command: Para crear nuestro propio comando.

Son solo algunos, con php artisan list podemos verlos todos y hacer uso de ellos para ser más productivos.

Seguridad

Authentication

Con php artisan make:auth lo tenemos todo: login, login, registro de usuarios, recuperación de contraseñas, podemos proteger las rutas, basic authentication, social authentication, y se pueden extender y personalizar los procesos muy cómodamente.

Authorization

Podemos proteger los recursos y las distintas acciones a las que puede acceder el usuario sin gran problema, todo se encuentra muy bien modularizado. Lo más resaltante y cómodo es que en las vistas Blade podemos usar ciertas directivas que nos ayudan a construir vistas según las políticas establecidas.

Facades

Aquellos comportamientos que podemos compartir entre controladores para simplificar nuestro código, los podemos llevar a un facade, y así nuestro código luce limpio y toda la lógica se concentra en lo que el controlador realmente hace.

Routing

Un sistema de routing común, sin embargo, lo que me parece muy cómodo es que podemos tener un enrutamiento para web, y otro para REST, sin complicaciones. Laravel se encarga de preparar el request y el response, dependiendo de la ruta solicitada por el cliente. Los controladores no se afectan en lo absoluto y ese decoupling es de lo mejor. Podrás desarrollar tu web app y/o un REST API para que puedas consumir servicios sin ningún inconveniente.

Eloquent ORM

En general, es un tema muy amplio y complejo, pero es importante resaltar que trabajar con relaciones es muy cómodo en este contexto. Considerando que en una app las relaciones entre entidades es fundamental, me alegra el enfoque que tiene Laravel a la hora de trabajar con ellas. Los modelos no incluyen las relaciones explícitamente, con lo cual las consultas son bastante rápidas y queda en manos del programador definir estas relaciones cuando las necesite: es muy fácil hacerlo, y, siguiendo ciertas convenciones, se puede lograr. Por ejemplo:

$user->posts()

Esta sentencia debería devolver los posts de un usuario (teniendo en cuenta que está relacionado a los posts). Inicialmente no lo hará, por lo cual debemos definir el metodo posts() en el modelo de usuarios:

public function posts()

{

    return $this->hasMany('App\Post');

}

Sin más, queda funcionando. Eloquent es muy amplio, y podría cubrirse en otro artículo más detalladamente.

Notificaciones

Muchas veces necesitamos notificar al usuario o a un grupo de usuarios acerca de eventos que ocurren en nuestra app, y la implementación para hacerlo suele no ser la misma siempre. Con Laravel, tenemos todo el proceso ya desarrollado e inclusive podemos escoger distintos sistemas de notificaciones y podemos intercambiarlos de una manera muy práctica. Podemos enviar mails, SMS, entre otros, incluso podemos poner todos estos en cola y gestionar cómodamente el envío si son muy numerosos.

Colas

Hacer tareas de gran consumo de recursos es muy común hoy en día, y resulta incómodo para el usuario final tener que esperar mucho tiempo hasta que una tarea termine, por lo tanto, entran en el juego las colas, que nos permite agendar procesos y delegar estos a un servicio que se encargue de procesarlas. Muchos frameworks no incluyen esto por defecto, sin embargo, Laravel ofrece la lógica necesaria para incorporar manejo de colas. Laravel incluye algunos servicios pre-configurados, adicionalmente, puedes usar el de tu preferencia, y te brinda todo el entorno para hacerlo cómodamente.

Conclusión

En conclusión, he probado un gran número de frameworks, muchos me han encantado, unos más que otros, pero definitivamente Laravel ocupa uno de los primeros lugares, ya que ofrece muchas facilidades que en la mayoría no se encuentran tan a mano. Laravel es emocionante y divertido, trae consigo mucho conocimiento, te lleva a usar herramientas muy actualizadas y novedosas. Está preparado para hacer grandes aplicaciones siguiendo un estilo muy estandarizado, lo cual facilita el mantenimiento de la aplicación, la hace fácil de documentar, fácil de extender y fácil de testear. Simplemente, recomiendo mucho el framework Laravel.