30-50% off hundreds of digital assets! WordPress themes, video, music and more 30-50% Off Go to Sale
Advertisement
  1. Code
  2. Laravel
Code

Introducción a Lumen

by
Length:ShortLanguages:

Spanish (Español) translation by Javier Salesi (you can also view the original English article)

Lumen es un flamante microframework PHP desarrollado por el autor del framework Laravel, Taylor Otwell. Aunque no te inquietes-Lumen no va a remplazar a Laravel. De hecho, la idea detrás de Lumen es que complementa tus existentes o futuras aplicaciones.

Taylor Otwell desarrolló Lumen con propósitos muy específicos en mente, llamados, microservicios y APIs. Sólo para ser breve, un microservicio es un proceso más pequeño y desacoplado que se comunica con una aplicación más grande, por ejemplo nuestra aplicación Laravel.

En éste artículo quiero abordar sobre lo que es diferente en Lumen, cuándo deberíamos utilizar Lumen,y cómo podemos usar Lumen. También explicaré cómo podemos tomar nuestra aplicación Lumen y fácilmente migrarla a una aplicación Laravel o sea más completa. No habrá mucho código, pues Lumen es casi lo mismo que Laravel. Comencemos.

¿Que hay de nuevo?

Ésta probablemente es la primera pregunta que muchos de ustedes formularán. En realidad, no mucho es realmente "nuevo" con Lumen además de algún detalle menor. Lumen aún utiliza la mayoría de los componentes Illuminate que conforman el framework Laravel (hay sólo un par que hacen falta). Piensa de él como una instalación menor de Laravel.

Su objetivo es maximizar el desempeño, y para obtener éste incremento en el desempeño, varias cosas han sido cambiadas. Las más importantes a éste respecto son las siguientes:

  1. Menos configuración. Gran parte de Lumen viene preconfigurado. De hecho, encontrarás que no hay directorio config en una instalación Lumen. En cambio, utilizarás los archivos .env para configurar gran parte de tu aplicación.
  2. Diferente enrutador. Ésta es probablemente la mayor diferencia y la razón por la que puede ser tan rápido como es. Lumen no utiliza el enrutador de Symfony como su hermano mayor Laravel. En cambio, Lumen usa FastRoute, una implementación de enrutamiento ligera desarrollada por Nikita Popov.

Hay algunos cambios aquí. FastRoute es una implementación muy rápida, pero no es tan completa como el enrutador de Symfony. Si quieres usar enrutamiento de subdominio entonces tendrás que apegarte a la instalación Laravel que utiliza el enrutador de Symfony.

El otro cambio que vale la pena mencionar es que para un mejor control sobre la configuración de ciertos componentes necesitarás modificar los archivos de configuración en el directorio vendor/laravel/lumen-framework. La mayor parte de la configuración puede hacerse a través de los archivos .env, pero algunas cosas menos configuradas no son directamente configurables.

¿Debería cambiarme a Lumen Ahora?

La respuesta dependerá, pero probablemente no. Si estás desarrollando o has desarrollado una aplicación en Laravel (4 o 5), entonces probablemente no necesitarás cambiarte a Lumen en éste momento. Mientras Lumen es capaz de desarrollar una aplicación web compleja, es mejor ajustarla a los servicios desacoplados más pequeños y APIs.

¿Cuándo lo puedo usar?

No puedo decirte cuando puedes y cuando no puedes usar un framework que está disponible para tí. Sin embargo, te haré algunas recomendaciones sobre cuándo podrías considerar utilizar Lumen para una parte de tu próximo proyecto.

Digamos que estás creando una aplicación de gran magnitud para una tienda en la web. Así que continúa e instala Laravel y trabaja en una aplicación monolítica. Ahora, no hay nada de malo con éste planteamiento, y puedes encontrar que funciona para tí. Si es así, adelante. Si encuentras que te estás agobiando con la complejidad, o parece que las cosas se salen de control, entonces puedes querer dividirlo en piezas más pequeñas y manejables.

Utilizarías Lumen para crear aplicaciones separadas para cada servicio desacoplado. Para nuestra tienda podríamos dividir la facturación, las notificaciones de correo electrónico, el envío y el rastreo en aplicaciones separadas. Cada una de éstas aplicaciones sería una instalación Lumen auto-contenido y cada aplicación haría sólo una tarea específica.

Para permitir que nuestra aplicación principal se comunique con nuestros servicios desacoplados, haríamos uso de colas y un servicio como Amazon SQS. Podemos usar colas para formar fácilmente colas de tareas, y cada servicio escucharía sus particulares tareas y procesarlas como van llegando. El beneficio para éste planteamiento es que cada servicio puede ser escalado y desplegado independientemente de cada uno.

Pudieras usar Lumen para crear una API que también pudiera ser consumida por nuestra aplicación principal con la ayuda de un cliente HTTP tal como Guzzle. Éste desacoplamiento te permite escalar y optimizar el enfoque del negocio de tu aplicación sin interferir con el resto.

Bueno, ¿Cómo lo uso?

Por ahora deberías tener una buena idea sobre si es una buena decisión el usar Lumen o no. Instalar Lumen es tan fácil como instalar Laravel: un simple comando composer create-project, o puedes instalar el comando lumen para crear nuevos proyectos. Sólo usaremos Composer para realizar una instalación fresca.

Composer incluirá todas las dependencias. Puedes usar Artisan para ver los comandos que se encuentran disponibles, o puedes crear un sitio con Host Virtual o Homestead. Cualquiera que sea tu decisión, una vez que comiences con el proceso de instalación verás la resplandeciente página informándote que tu Lumen está listo.

La configuración se hace completamente en los archivos .env, así que o querrás renombrar el archivo .env.example o copiar su contenido en un nuevo archivo.

La restante inicialización de componentes mediante bootstrap de la que querrás percatarte está en el archivo bootstrap/app.php. Si estás usando la configuración .env mencionada arriba entonces querrás deshabilitar el comentario Dotenv::load(_ _DIR_ _.' / . . / ' );. Desplazándote por éste archivo verás varias líneas de comentarios que pudieras habilitar. Están la carga de fachadas, Eloquent, algunos middlewares, y el registro de otros proveedores de servicio.

Ahora tienes una recién instalada y configurada copia de Lumen lista para crear algo fabuloso.

Pero espera, ¡Ahora necesito Laravel!

Podrías estar creando tu aplicación Lumen y todo funcionará absolutamente bien, hasta que un día cuando tu te das cuenta que necesitas algo que solamente el framework Laravel ofrece. Aunque no te inquietes, es una actualización extremadamente sencilla. Aquí están los pasos que debes seguir:

  1. Instala una copia fresca de Laravel 5.
  2. Copia tu directorio app. Sé consciente que puedes necesitar varias cosas del directorio app de L5, como los proveedores.
  3. Copia tu configuración al archivo apropiado en el directorio config.
  4. Copia cualquier inicialización con bootstrap personalizada.
  5. Arregla algunas rutas. Debido a que Lumen usa FastRoute, probablemente necesitarás modificar algunas de tus rutas para que sean compatibles con el enrutador Symfony.

Eso debería ser la principal carga de trabajo de lo que necesitas copiar para migrar tu aplicación Lumen a Laravel. Claro, ésto funciona en ambos sentidos, así puedes fácilmente migrar una aplicación Laraval a Lumen si te das cuenta que no necesitas todo lo que ofrece un framework más completo.

Conclusión

Para finalizar, sólo quiero destacar que estoy defendiendo el uso de Lumen primariamente para servicios desacoplados y APIs, que es el fin de su uso. Eso no es decir que no puedes crear una completa aplicación en Lumen, porque si puedes. Si eliges hacerlo, está bien. No hay ninguna regla tallada en una piedra que te diga lo que puedes y no puedes usar para tus proyectos. Al final del día la decisión recae en tí. Considera tus opciones, planea tu proyecto, decide lo que necesitarás, consulta a tu equipo, y luego toma tu decisión final.

¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.