¿Qué es Laravel?

laravel-8-jetstream.png
Solucionex
15
Jun 21

Varias veces se ha mencionado a Laravel en este blog, pero, ¿qué es realmente?. Pues bien, según su página oficial es un framework de código abierto para desarrollar aplicaciones web en PHP con una sintaxis elegante y expresiva. Aunque esto es cierto, debo añadir que también tiene una curva de aprendizaje poco pronunciada además de ser muy rápido para desarrollar.

Uno de los aspectos por los que destaca Laravel es que está basado en otro de los grandes frameworks de PHP: Symfony, es por esto que coge todas sus buenas características tales como la inyección de dependencias, colas, tareas programadas, testing unitario y de integración... y las integra con todo su ecosistema para crear uno de los mejores frameworks que hay a día de hoy.

Por si no fuese poco su comunidad es una de las más grandes y activas que hay, con más de 65.000 estrellas en github y una inmensa cantidad de paquetes para todo aquello que necesitemos hacer.

Ecosistema

Laravel destaca por el ecosistema que ha creado por todas las aplicaciones que tiene alrededor. Vamos a ver algunas de ellas:

  • Vapor: plataforma serverless basada en AWS para desplegar toda la infrastructura, escalable y trasparente para el usuario, ya que no hay tiempo de incatividad.
  • Lumen: versión reducida orientada al desarrollo de APIs. Es posible de mejorar a la estructura normal de Laravel si fuese necesario.
  • Socialite: Autenticación OAuth con varios servicios como Facebook, Twitter, LinkedIn, Google, Github, Gitlab y Bitbucket.
  • Mix: Gestión de librerías css y js basada en webpack.
  • Sanctum: Autenticación ligera para SPAs,aplicaciones móviles y APIs basadas en tokens.
  • Nova: Panel de administración altamente customizable basado en VueJs.
  • Telescope: Asistente para el desarrollo que provee de mucha información tal como peticiones, excepciones, eventos, consultas, etc.
  • Echo: Websockets para acciones en tiempo real
  • Cashier: Implementación de pasarelas de pago basadas en Stripe, permite desde simples compras hasta modelos de suscripciones por tiempo.

Estructura

La estructura de archivos de laravel es bastante simple, se compone de estos directorios

app -> Directorio principal de la aplicación
  Console
  Exceptions
  Http
    Controllers -> Carpeta para los controladores,
    Middleware
  Models -> Aquí van los modelos/entidades
  Providers
bootstrap
  cache

config -> Configuración de la aplicación: base de datos, sistemas de archivos, autenticación...
database -> Todo lo relacionado con la base de datos
  factories -> Aquí podremos crear clases para generar datos ficticios
  migrations -> Clases que contienen el esquema de la base de datos
  seeders -> Clases para introducir datos ya definidos en la base de datos
public -> Carpeta a la que tiene que apuntar el servidor web
resources -> Todo lo relacionado con estilos, javascript, idiomas...
  css
  js
  lang -> Aquí podremos añadir más carpetas en función de los idiomas que tenga nuestra app
    en
  views -> Las vistas de nuestra aplicación. Utilizan el motor de plantillas Blade
routes -> Todas las rutas de la app, tanto de la api, como websockets etc.
storage -> Carpeta de almacenamiento para la subida de ficheros (pueden definirse otro tipo de almacenamientos como el S3 de AWS)
  app
    public
  framework -> Archivos de caché de sesión, vistas etc.
    cache
      data
      sessions
      testing
      views
  logs -> Aquí se encuentran los logs con los que podemos depurar la aplicación

Paquetes recomendados

Hay infinidad de paquetes en Laravel, pero hay unos que descatan bastante. Se trata de los paquetes de Spatie.be, hay varios que son útiles en el día a día. Aquí algunos de ellos:

Hay muchos más, pero el post crecería bastante de tamaño. También decir que no todo iba a ser de spatie, por lo que auqí dejo otros paquetes:

  • Maatwebsite/Laravel-Excel: Una fotrma fácil de trabaajr con archivos excel
  • barryvdh/laravel-debugbar: Una de las mejores herramientas que podemos tener a la hora de desarrollar
  • nunomaduro/larastan: Wrapper de phpstan para laravel, nos ayuda a encontrar errores y a mejorar la calidad del código
  • livewire/livewire: Es una revolución en el apartado del frontend. Es un framework que nos ayuda a crear interfaces reactivas sin salir del ecosistema de Laravel

Si todo esto sabe a poco, pueden consultarse todos los paquetes que existen de Laravel aquí https://packalyst.com/

Conclusiones

PROS

  • Desarrollo muy rápido y guiado
  • Mucho apoyo por parte de la comunidad
  • Rápido y escalable

CONTRAS

  • En el apartado del frontend terminan de ponserse de acuerdo sobre qué tecnología usar