Laravel¶
¿Qué es Laravel?¶
Laravel es un framework de desarrollo web para PHP, diseñado para facilitar y agilizar la creación de aplicaciones web robustas, seguras y modernas. Desde su lanzamiento en 2011 por Taylor Otwell, Laravel ha crecido hasta convertirse en el framework PHP más popular del mundo, respaldado por una gran comunidad y una extensa documentación.
Un poco de historia¶
Laravel nació como una respuesta a las limitaciones de otros frameworks PHP de la época, como CodeIgniter, que carecían de funcionalidades modernas como migraciones, soporte para inyección de dependencias o un sistema de rutas más flexible. Otwell diseñó Laravel con una filosofía clara: combinar lo mejor de otros lenguajes y frameworks (como Ruby on Rails o ASP.NET) con la simplicidad y la potencia de PHP.
Desde entonces, Laravel ha evolucionado rápidamente con lanzamientos regulares y mejoras constantes. Con herramientas como Eloquent ORM, Blade (motor de plantillas), Laravel Mix, y Artisan CLI, Laravel ofrece una experiencia de desarrollo fluida, elegante y altamente productiva.
Cuota de mercado y comunidad¶
Laravel lidera con diferencia entre los frameworks PHP. Según múltiples encuestas de desarrolladores y datos de GitHub:
- Es el framework PHP más "starteado" en GitHub (con más de 75k estrellas).
- Utilizado por millones de desarrolladores en todo el mundo.
- Respaldado por plataformas como Laravel Forge, Envoyer, Nova, y Vapor, que amplían su ecosistema profesional.
- Tiene una comunidad gigantesca, con miles de paquetes de terceros, foros, vídeos, cursos, conferencias (como Laracon), y soporte constante.
¿Por qué Laravel?
Laravel no solo es una opción moderna; es la opción inteligente para desarrollo PHP. Su sintaxis expresiva, su arquitectura escalable y su orientación a buenas prácticas lo convierten en una elección sólida tanto para proyectos pequeños como para sistemas empresariales complejos.
Entorno de desarrollo en Docker¶
Requisitos previos
Es necesario tener Docker instalado. Puedes descargarlo desde Docker Desktop. En el módulo profesional de "Despliegue de aplicaciones web" se trata más en profundidad.
Todo proyecto debe comenzar con la creación de una carpeta en la que tendremos todos nuestros ficheros, por ello la creamos y desde el terminal nos colocamos en ella. Una vez que estemos en ella, haremos uso de la imagen de Docker de Bitnami que incluye todo lo necesario para el desarrollo de de nuestros proyectos.
Paso 1: Creando la red para conectar la base de datos con la aplicación¶
Laravel necesita una base de datos, ya sea MySQL o MariaDB, para almacenar la información. En este caso, usaremos la imagen de Bitnami de MariaDB para satisfacer este requerimiento. Pero debemos comenzar con el puente de conexión entre la base de datos y nuestro desarrollo.
docker network create laravel-network
Siendo laravel-network
el nombre de esta conexión. Este nombre ha de ser único en nuestro sistema, por lo que se recomienda que sea lo más significativo posible.
Paso 2: Creando el volumen para la base de datos y la persistencia de datos¶
docker volume create --name mariadb_data
docker run -d --name mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MARIADB_USER=bn_myapp \
--env MARIADB_DATABASE=bitnami_myapp \
--network laravel-network \
--volume mariadb_data:/bitnami/mariadb \
bitnami/mariadb:latest
Es importante resaltar que del comando anterior debemos utilizar los datos de nuestra aplicación. En este caso, hemos usado el usuario bn_myapp
para la base de datos bitnami_myapp
en la red laravel-network
sobre el volumen mariadb_data
usando la última imagen de Bitnami de MariaDB.
Paso 3: Lanzamos el contenedor usando el directorio actual en el que estamos¶
docker run -d --name laravel \
-p 8000:8000 \
--env DB_HOST=mariadb \
--env DB_PORT=3306 \
--env DB_USERNAME=bn_myapp \
--env DB_DATABASE=bitnami_myapp \
--network laravel-network \
--volume ${PWD}/mi-proyecto:/app \
bitnami/laravel:latest
version: '3.8'
services:
laravel:
image: bitnami/laravel:latest
container_name: laravel
ports:
- "8000:8000"
environment:
- DB_HOST=mariadb
- DB_PORT=3306
- DB_USERNAME=bn_myapp
- DB_DATABASE=bitnami_myapp
volumes:
- ./mi-proyecto:/app
networks:
- laravel-network
depends_on:
- mariadb
mariadb:
image: bitnami/mariadb:latest
container_name: mariadb
environment:
- MARIADB_ROOT_PASSWORD=supersecret
- MARIADB_USER=bn_myapp
- MARIADB_PASSWORD=secretpass
- MARIADB_DATABASE=bitnami_myapp
volumes:
- mariadb_data:/bitnami/mariadb
networks:
- laravel-network
volumes:
mariadb_data:
networks:
laravel-network:
Sobre el directorio:
docker-compose up -d
Comprobar que todo está listo para el desarrollo¶
Si todo ha ido correctamente, al acceder a nuestro localhost, nos aparecerá la configuración la versión de Laravel empleada y la versión de PHP utilizada siempre que el proyecto esté vacío.
En esta imagen se aprecia que usaremos la versión de Laravel 11.2 y de PHP 8.3.10. En el siguiente apartado veremos el porqué de estas versiones y su implantación.
Otros entornos de desarrollo¶
Aunque desde el módulo de DWES se ha optado por el uso de Docker, es conveniente nombrar otros posibles entornos de desarrollo, más específicos del sistema operativo que se use.
- Windows: Laragon
- Linux: Laravel Sail
- MacOS: Laravel Valet
Es importante remarcar que el uso de uno u otro no implicará que tu desarrollo sea de mayor o menor calidad, sólo afectará a tu flujo de trabajo.
Laravel 11¶
Laravel es un destacado framework PHP conocido por su elegante sintaxis, sus potentes funciones y sus herramientas fáciles de usar para los desarrolladores. Su arquitectura soporta un desarrollo web PHP eficaz, ayudándote a crear aplicaciones escalables y mantenibles.
Justificando Laravel 11¶
El uso en DWES de la versión 11 del framerwork viene dada por su política de soporte, ya que en el curso actual será, de las que tengan aún soporte de bugs, la de mayor camino. Si se observa la tabla inferior, veremos como la 9 y la 10 estarán en el fin de su ciclo de vida o terminándola:
En la versión 11 de Laravel se han implementado mejoras en el sistema de directorios, de seguridad y de depuración.
Actividades¶
-
AC 701. (RA8 / CE8a CE8b CE8c / IC1 / 3p) - Configura un entorno de desarrollo para una aplicación Laravel utilizando Docker. Documenta el proceso realizado.
-
AR 702. (RA8 / CE8a CE8b CE8c / IC1 / 3p) - Configura un entorno de desarrollo para una aplicación Laravel utilizando el entorno de desarrollo que desees, ha de ser diferente a Docker. Documenta el proceso realizado y realiza una breve comparación con la AC 701.
-
AP 703. (RA8 / CE8a CE8b CE8c / IC1 / 3p) - Realiza una investigación sobre los cambios de Laravel entre sus versiones 10 y 11 y realiza una breve reflexión de lo que ello implica.