El ecosistema de Laravel es actualmente una de las soluciones más populares en el mundo de PHP. La librería Laravel original ha pasado de ser una simple biblioteca a una organización completa de librerías y servicios asociados. Una vez que empiezas a implementar una parte de Laravel, caes en la madriguera del conejo, y nunca sabes cuánta de la tecnología Laravel vas a adoptar. Además del conjunto básico de servicios, la práctica común en Laravel asocia frecuentemente otras tecnologías bien conocidas como Redis, Vue.js o Tailwind CSS.

Para empezar, Lumen es la microestructura creada por el equipo de Laravel como el sabor más ligero de la plataforma. Por defecto, viene con un conjunto mínimo de características. Después de implementar el paquete base, ya eres libre de adoptar cualquiera de los otros paquetes o servicios de Laravel. Para más información sobre Lumen: https://lumen.laravel.com/docs/5.8

Para comenzar con Laravel Lumen en Joomla

¿Por qué Laravel Lumen en Joomla?

El microframework Lumen proporciona una API agnóstica, independiente a un CMS específico, para acceder a la plataforma completa de bibliotecas Laravel y servicios integrados. En nuestro caso, comenzamos a implementar Lumen como la base de una familia de paquetes para Joomla, PrestaShop y WordPress. En nuestros sistemas, el modelo de negocio principal se implementa siguiendo las prácticas de Laravel, se desarrollan otras capas superiores según sea necesario, y la capa más baja interactúa con el CMS subyacente para integrar la funcionalidad donde sea necesario.

Laravel evoluciona rápidamente, y cada versión implementa las últimas características de PHP disponibles. Laravel 5.8 es la última versión, compatible con 7.1 o superior. Laravel 5.5 es la última versión de LTS, soportada hasta el 30 de agosto de 2020. Laravel 5.4 fue la última versión compatible con la rama de PHP 5 (ya no es soportada). En este mismo Septiembre 2019, se lanzó Laravel 6. Para más información sobre las versiones de Laravel: https://laravel.com/docs/master/releases#support-policy

Ser elocuente en Joomla

El ORM Eloquent (incluido con Laravel) proporciona una implementación sencilla del patrón ActiveRecord, para trabajar con la base de datos. Es la piedra angular de la arquitectura y el primer paso para comprender la filosofía Laravel. El Query Builder es notablemente similar al Joomla Query Builder, así que el uso suena familiar y se siente como el primer paso natural para un proyecto de integración. Eloquent se encuentra en plena evolución, implementando novedosas funcionalidades. Por ejemplo, una de las novedades notables de Laravel 6 para Eloquent es la mejora en el soporte de subqueries: https://laravel.com/docs/6.0/releases 

Más alla de los vectores, colecciones

En PHP, el uso de los arrays (vectores y matrices) obliga a conocer una serie variopinta de caracteríscas del lenguaje, propiedades, métodos, funciones y objetos, el resultado al día de hoy de la evolución dispar de PHP. Para simplificar toda esta complejidad, Laravel tiene la librearía Collections. Esta librería provee un visión consistente y poderosa para la gestión de colecciones de datos. Como ejemplo de las posibilidades, en Laravel 6 se incorpora la gestión por lotes de datos en colecciones: https://laravel.com/docs/6.0/releases 

Un componente básico que integra el Lumen

Para empezar a implementar un stack nuevo en Joomla, el paso inicial es identificar lo que realmente necesitamos usar. Empecemos con un componente para integrar Laravel Lumen.

En Joomla, un componente básico sólo necesita implementar un archivo, el punto de entrada. En nuestro caso, para crear un componente "XT Lumen", entonces sólo tienes que incluir un archivo llamado como el componente. Por ejemplo, xtlumen.php. Dentro de este archivo, sólo es necesario inicializar la aplicación Laravel y generar contenido. Si se invoca manualmente al componente con https://my-site.com/index.php?option=com_xtlumen&view=app, se obtiene la salida que genera el componente.

Para ilustrar el concepto he creado el proyecto anibalsánchez/laravel-lumen-boilerplate-for-joomla 

Esta extensión instala un componente y utiliza Lumen para producir desde Blade una vista "Hello Joomla", en el backend o en el frontend. Para comenzar, puedes descargar e instalar la extensión desde aquí: https://github.com/anibalsanchez/xt-laravel-lumen-boilerplate-for-joomla/releases/download/1.0.0/pkg_xtlumen_v1.0.0.zip

Más allá de los primeros pasos

Después de estos pasos, se abre un mundo de posibilidades, y seguramente muchas más preguntas acerca de cómo combinar ambas plataformas. Con el paquete anterior, Laravel Lumen ya está correctamente inicializado y funcionando en el contexto de Joomla para generar una salida. A partir de esta prueba de concepto es posible avanzar en la definición del Ruteo, Middleware, Vistas, Modelos, Proveedores de Servicios, y el contenedor.

La simplicidad es la máxima sofisticación.