Laravel: ¿Qué es y cómo funciona?

Categoría:  Desarrollo web
Fecha: 06/09/2022
Hoy te voy hablar de uno de los frameworks de PHP más usados y mejor valorados por la comunidad de desarrolladores. Laravel no ha parado de crecer desde que empezó a coger notoriedad por 2014. Desde entonces sigue en constante evolución, implementando mejoras en su arquitectura y seguridad, y siendo hoy día uno de los frameworks más demandados por las empresas. En este post te voy a explicar qué es Laravel y todo lo que engloba este framework. Conocerás la arquitectura en la que se basa, sus principales características y algunos datos adicionales. Si estás interesado en saber más, espero que al terminar de leer este artículo tengas mucho más claro en qué consiste Laravel, su funcionamiento y todas las características que lo engloban.

Conceptos básicos para entender qué es Laravel

Para que puedas comprender mejor la definición de Laravel, es necesario que previamente comprendas algunos conceptos. Estos conceptos vendrían siendo:
  • Conocer acerca del lenguaje PHP.
  • Entender qué son los frameworks de PHP.
  • Disponer de conocimientos básicos sobre el patrón MVC.
Si ya conoces la definición de estos términos, puedes saltarte este apartado. De no ser así, te recomiendo que te pares y leas con calma las cuestiones que te indico a continuación.

¿Qué es PHP?

PHP es un lenguaje de programación de código abierto enfocado al desarrollo web. Su acrónimo proviene de Hypertext Preprocessor. Es un lenguaje que se ejecuta en el lado del servidor o, lo que es lo mismo, es un lenguaje de programación enfocado al backend. PHP es usado de forma muy generalizada en el mundo del desarrollo de páginas web. De hecho, casi el 80% de los sitios web utilizan PHP. Este alto porcentaje se debe, en parte, a que la mayoría de los CMS o Sistemas de Gestión de Contenidos han sido construidos con este lenguaje. Un punto a su favor es que cuenta con una curva de aprendizaje sencilla. Además, es un lenguaje muy flexible al programar. Aunque estos puntos pueden ser también una contrapartida, pues pueden dar pie a la creación de proyectos mal estructurados y generar un código de mala calidad. Para solventar este último punto, una buena solución es hacer uso de frameworks de PHP.

¿Qué es un framework de PHP?

Un framework de PHP es un marco de trabajo que provee una base de código ya construida, facilitándote el desarrollo y proporcionándote una estructura ya creada con la que trabajar. Debo aclararte que no solo existen frameworks para PHP, sino que puedes encontrar frameworks enfocados a distintos lenguajes de programación y tecnologías. El uso de frameworks hoy en día es una práctica muy utilizada, y es extraño que te encuentres con proyectos creados desde cero sin hacer uso de algún framework o librería, pues estos requieren de un tiempo de desarrollo mucho mayor. Algunos de los frameworks de PHP más conocidos son CodeIgniter, Symfony, Zend y, por supuesto, Laravel.

¿Qué es MVC?

Esquema MVC MVC es un patrón de arquitectura de software. Quizás de primeras te pueda sonar a algo muy difícil de comprender, pero si te digo que es una forma de estructurar el código, quizás no te suene tan enrevesado. Para que entiendas mejor en qué consiste el patrón MVC, te voy a contar de dónde proviene este acrónimo. Su nombre se basa en el concepto de Model View Controller o lo que en español traduciríamos como Modelo Vista Controlador. Voy a desglosarte estos conceptos para que comprendas mejor la estructura que ese patrón de software proporciona.
  • Modelo: Se encarga de gestionar los datos de la aplicación. Normalmente, estos datos están asociados a una base de datos. Por ejemplo, podrías definir un modelo User que se encargaría de trabajar con los datos de la tabla users.
  • Vista: Como su nombre indica, se encarga de la parte visual del proyecto, es decir, en la vista se construye la interfaz que el usuario verá. Por ejemplo, una vista podría encargarse de mostrar la sección de perfil de un usuario.
  • Controlador: Hace referencia a la parte lógica de la aplicación. Los controladores son el punto de unión entre las vistas y los modelos. Por ejemplo, un controlador podría decidir si mostrar una vista u otra en función de los permisos de un usuario.
Espero que con las definiciones de estos términos tengas algo más claro en qué consiste el patrón de diseño MVC ya que Laravel, al igual que otros muchos frameworks, hacen uso de este tipo de arquitectura. Por eso, es necesario que conozcas estos conceptos para que te resulte más simple trabajar con ellos.

¿Qué es Laravel?

¿Qué es Laravel? Laravel es un framework de PHP que facilita el desarrollo de aplicaciones web. Su diseño de software se basa en el patrón MVC (Modelo Vista Controlador), por lo que proporcionará a tu código una base estructurada con la que comenzar a desarrollar. Una de las grandes ventajas de Laravel es que cuenta con un amplio abanico de librerías y módulos para ampliar sus funcionalidades. Es importante mencionarte que Laravel hace uso de un gran número de librerías de Symfony, que es otro framework de PHP. Como consecuencia, si en algún momento tienes que cambiarte a este framework, no te supondrá mucho esfuerzo. Otro punto que quiero destacarte es que Laravel cuenta con una gran comunidad a sus espaldas y, si en algún momento te encuentras con dificultades en el desarrollo de tu página web, no te será difícil encontrar respuestas de otros usuarios o información al respecto.

¿Quién creó Laravel?

Laravel fue creado en 2011 por Taylor Otwell, que se graduó por la Arkansas College of Technology en Estados Unidos. Después de graduarse, Taylor comenzó a trabajar en un proyecto propio construido con PHP. Para construirlo, Taylor hizo uso del framework Codignatter pero, al trabajar con él, se dio cuenta de que podía mejorar algunos aspectos y así es como comenzó a crear lo que hoy se conoce como Laravel.

¿Laravel es Frontend o Backend?

Laravel es un framework que está enfocado a trabajar en la parte del servidor. Por lo tanto, estaríamos hablando de un framework de PHP que se encasilla mejor como backend. Cuenta con soporte para implementar tecnologías como React o Vue, siendo estas librerías enfocadas al desarrollo frontend, por lo que puedes delegar por completo las funcionalidades propias del frontend. No obstante, Laravel proporciona un sistema de vistas propio, denominado blade, del que te hablaré algo más en detalle a lo largo del post. Si decides usar blade, puedes construir tu frontend utilizando Laravel sin ningún tipo de problema.

¿Para qué sirve Laravel?

Laravel sirve para crear aplicaciones web, enfocándose en lo que se suele denominar como desarrollos a medida, es decir, puedes crear prácticamente cualquier tipo de aplicación web haciendo uso de este framework. Pero como sé que esto te puede sonar muy genérico, te voy a mencionar algunos tipos de proyectos que puedes hacer con Laravel, aunque las posibilidades reales son mucho más amplias.
  • Crear una API: Si no conoces el concepto de API, básicamente permite la comunicación entre varias aplicaciones. Por ejemplo, puedes crear en Laravel la parte lógica de un registro de usuarios y crear una API para utilizar ese sistema en una app móvil.
  • Sistemas de administración: Puedes crear cualquier sistema de gestión personalizado que se te ocurra. Por ejemplo, podrías crear un sistema para gestionar el mantenimiento de máquinas, otro para controlar el fichaje de trabajadores, un sistema para controlar el alquiler de salas...
  • Creación de comandos: Puedes crear comandos personalizados que pueden ser ejecutados por el servidor.
Como puedes ver, las posibilidades para crear diferentes proyectos son muy amplias y es que, al estar hablando de desarrollo web a medida, podrás crear prácticamente cualquier proyecto que se te ocurra.

¿Cómo funciona Laravel?

Puede que ya te hayas hecho una idea del tipo de proyectos que puedes crear con Laravel, pero quizás te estés preguntando cómo trabaja Laravel de forma interna. Para responderte a esta pregunta, voy hablarte de las características de Laravel, dividiéndolas en dos apartados. En el primer apartado, te hablaré de las características básicas, siendo estas las más utilizadas y conocidas. En el segundo apartado, te hablaré de algunas características más avanzadas pero realmente útiles y que yo destacaría de este framework.

Características básicas de Laravel

Laravel trabaja con 4 conceptos básicos que debes aprender si quieres comprender cómo funciona Laravel. En este punto, te pediré que recuerdes que Laravel trabaja con un patrón de arquitectura de MVC, pues las características que te mencionaré a continuación están estrechamente ligadas con este patrón.

RUTAS

El manejo de rutas es un concepto muy importante para poder empezar a usar Laravel. Para explicártelo de forma simple, cuando un usuario navega por diferentes URL de una web, está realizando peticiones al servidor. El servidor le responderá de una forma u otra dependiendo de la URL o ruta solicitada. Por ejemplo, si un usuario accede a www.ejemplo.com/perfil el servidor le responderá con la página de perfil, o si accede a www.ejemplo.com/blog el servidor le responderá con la vista del listado de entradas del blog. Esta gestión Laravel la realiza a través de las rutas. En Laravel existen dos ficheros encargados de manejar rutas. El primer fichero es el web.php, en el que registrará las rutas de nuestro sitio web. El segundo fichero está enfocado a la creación de APIs y se denomina api.php. En la definición de la ruta podemos indicarle con qué tipo de petición trabajará la ruta. Por ejemplo, definiremos las rutas GET para peticiones estándares a nuestra página web pero, si queremos trabajar con guardado de datos, podemos definirlas como peticiones de tipo POST. Rutas de Laravel

MODELOS

Los modelos son los encargados de trabajar con los datos. Esto quiere decir que si quieres obtener, guardar o actualizar algún registro en la base de datos haremos uso de los modelos. Para gestionar el acceso a nuestra base de datos, los modelos hacen uso de Eloquent. Eloquent es un ORM que básicamente nos permite relacionar los datos de nuestra base de datos con entidades. De este modo, agiliza enormemente el trabajo con la base de datos. Por ejemplo, al crear un modelo podremos guardar un nuevo registro simplemente utilizando la función save. Modelos de Laravel Como puedes observar, manejar la base de datos con Eloquent es realmente sencillo y no solo podrás guardar, eliminar o actualizar registros, sino también proveer a tus modelos de funciones más complejas. Algunas de estas funcionalidades podrían ser definir relaciones entre los modelos, crear scopes, o crear accesos a atributos personalizados.

VISTAS

Si alguna vez has trabajado con PHP seguramente en algún momento has tenido que crear una vista que mostrase alguna variable, combinando código HTML Y PHP. Probablemente te habrás habrás dado cuenta de lo engorroso que resulta, en especial cuando el fichero empieza a crecer y acaba pareciendo una amalgama de código HTML y PHP. Para darle solución a ese problema, Laravel incorpora su propio sistema de plantillas, denominado blade. Estas plantillas suelen disponer de la extensión .blade.php, por lo que podrás identificar fácilmente qué ficheros corresponden a las vistas. A través de blade, conseguimos crear un fichero ordenado y limpio. Pero como una imagen vale más que mil palabras, a continuación podrás ver la diferencia entre la legibilidad de un fragmento de código construido con blade y la de un fragmento de una vista construida con PHP. Vistas a través de Blade en Laravel Además de proporcionarte una forma más simple de mostrar los datos, blade también cuenta con un sistema de layouts, por lo que podrás extender plantillas, separarlas en secciones... En definitiva, con blade podrás construir el esqueleto de tu sitio web de forma organizada y eficaz.

CONTROLADORES

Los controladores en Laravel se pueden definir como la parte lógica de tu aplicación web. Son los encargados de manejar las acciones que ejecutarán los modelos y decidirán qué vista retornarán. Cuando se realice una petición HTTP (por ejemplo, ir a una URL de tu aplicación web), Laravel buscará en las rutas que hayas registrado. Por norma general, cuando registras las rutas, les asociarás un método de un controlador. En esa función del controlador es donde construirás la lógica de tu aplicación. Para que entiendas mejor la manera en la que todos estos elementos interactúan con los controladores, voy a explicarte un proceso muy básico acompañado de un esquema visual. ¿Cómo funciona Laravel? Podrías tener una ruta registrada denominada "recetas" y que, cuando el usuario acceda a esa URL, llame al método del controlador mostrarRecetas() de tal forma que dicho método recoja todos los datos de las recetas y posteriormente retorne la vista recetas.blade.php

Características avanzadas de Laravel

En este punto, te voy hablar de dos características avanzadas de Laravel que comenzarás a usar en cuanto lleves un poco de tiempo trabajando con Laravel. Laravel posee muchas más, todas ellas muy interesantes, como la posibilidad de crear comandos, programar tareas, crear relaciones polimórficas... Pero voy hablarte de las dos que son más usadas.

ARTISAN

Artisan es una interfaz de línea de comandos que te facilitará enormemente el trabajo con Laravel. A través del terminal podrás ejecutar unas simples líneas de comando con las que gestionar una gran multitud de aspectos de tu aplicación web. A continuación, te voy a poner algunos ejemplos sencillos para que puedas comprender mejor las posibilidades que artisan te ofrece: Poner en modo mantenimiento
php artisan down
Activar modo mantenimiento en Artisan Desactivar el modo mantenimiento
php artisan up
Desctivar modo mantenimiento en Artisan Si tus ficheros de rutas empiezan a crecer, es un poco complicado visualizar las rutas que hemos generado. Con el siguiente comando, podremos ver un listado completo de todas las rutas.
php artisan route:list
Lista de rutas Artisan Con los comandos de tipo make: podremos crear una multitud de entidades o utilidades de forma automática, sin necesidad de escribir código. Podremos crear modelos, controladores, vistas, migraciones, middlewares, notificaciones...
php artisan make:model Trabajador
Comandos make en Artisan No me quiero alargar mucho más con este punto, ya que el listado de todas las acciones que se pueden ejecutar es realmente extenso. Simplemente quiero que sepas que con artisan también puedes limpiar la caché de tu proyecto, levantar un localhost o instalar un sistema de autenticación. Si quieres saber más sobre las posibilidades que te ofrece artisan, puedes echarle un vistazo a la documentación oficial de Laravel. Documentación oficial de artisan

MIGRACIONES

Las migraciones son una excelente manera de gestionar los cambios de tu base de datos. A grandes rasgos, las migraciones son pequeños fragmentos de código que ejecutan acciones sobre la estructura de tu base de datos. Con las migraciones puedes crear nuevas tablas, eliminarlas o modificar el nombre de las filas. La mayor ventaja de usar migraciones es que podrás tener un control de todos los cambios que has ido realizando e incluso revertir la acción que realizaba una migración. Por ejemplo, imagina que has creado una primera migración donde has creado la tabla recetas. Después de un tiempo trabajando en tu aplicación web quieres ampliar su funcionalidad y añadir un campo nuevo, donde se indique si esa receta es para celíacos o no. Pues bien, podrías crear una migración que generase un nuevo campo "celiacos" y que fuese un campo donde solo admitiese dos valores, SI o NO. Este cambio lo definirías dentro del método up de la migración creada. Migraciones en Laravel Para ejecutar las migraciones que crees, debes hacer uso de artisan a través del siguiente comando.
php artisan migrate

¿Cómo empezar a usar Laravel?

Si, según has ido leyendo el post, te han entrado ganas de trastear con este framework, has llegado al apartado correcto. En este punto te voy a explicar qué es lo que necesitas para empezar a trabajar con Laravel y adentrarte en el mundo del desarrollo de aplicaciones web a medida.

¿Qué necesito para programar con Laravel?

  • Conocimientos en PHP: Este es un punto indispensable antes de comenzar a trabajar con Laravel. Debes entender que Laravel no es un lenguaje de programación, sino un framework de PHP. Por este motivo, si no posees ningún conocimiento sobre PHP no te recomiendo que empieces a usar este framework directamente.
  • Servidor web: Para poder empezar a trabajar con Laravel necesitarás un servidor con Apache, IIS o Nginx. Estas tecnologías las puedes encontrar en la mayoría de los hostings web o, si eres un poco más avanzado, puedes hacer uso de un servidor VPS.
  • Base de datos: Laravel dispone de compatibilidad con varios tipos de base de datos, como MySQL, Sqlite, Postgresql o sqlserver. Lo normal es que comiences a trabajar con una base de datos MySQL.
  • Composer: Es un gestor de dependencias de PHP. Para instalar Laravel, deberás hacer uso de este gestor. Composer será necesario para actualizar e instalar las diferentes librerías de las que depende Laravel, así como librerías externas que quieras añadir a mayores.
  • Editor de código: Para poder trabajar con el código de forma profesional, necesitarás utilizar un editor de código profesional, como Visual Studio Code. Este punto es una cuestión de gustos personales al trabajar, por lo que puedes escoger el editor que se adapte mejor a ti y a tu metodología de trabajo.
Quiero aclararte que también puedes trabajar con Laravel de forma local. Para ello, puedes usar herramientas como XAMP (en caso de que uses Windows) o MAMP (en caso de que utilices Mac). También puedes trabajar a través de contenedores como Docker. Aunque el desarrollo lo hagas en local, para pasar el proyecto a producción necesitarás contar con un buen servidor. Si no quieres gastar tu tiempo en buscar un buen servicio, te recomiendo que le eches un ojo a nuestro Hosting Elástico SSD o, si lo prefieres, puedes hacer uso de un servidor VPS.

¿Cómo iniciar un proyecto en Laravel?

Tenemos dos opciones disponibles para iniciar un proyecto en Laravel. Ambas nos permitirán comenzar un proyecto de Laravel de forma rápida.

A TRAVÉS DEL INSTALADOR DE LARAVEL

La primera forma es a través del instalador de Laravel. Este instalador lo podremos obtener a través de composer, utilizando la siguiente línea de comando.
composer global require laravel/installer
Una vez instalado, tendremos disponible el siguiente comando que nos permitirá crear rápidamente un nuevo proyecto en Laravel.
laravel new nombre-proyecto

A TRAVÉS DE COMPOSER

La segunda opción es usar directamente composer sin hacer uso del instalador de Laravel. En este caso, solo necesitarías ejecutar una única línea de comando:
composer create-project laravel/laravel nombre-proyecto

Aplicaciones hechas con Laravel

Te voy a listar algunos proyectos realizados con Laravel. La variedad que encontrarás en el listado es un reflejo de lo flexible que es Laravel al construir aplicaciones web.

PyroCMS

Pyrocms Como su nombre indica, Pyro CMS es un Sistema de Gestión de Contenidos. Destaca por ser muy ligero y por su flexibilidad. Es 100% de código abierto. Posee herramientas de publicación y gestión de usuarios, por lo que puede ser una alternativa a CMS más comunes como Drupal o WordPress. En contrapunto, no existe una comunidad tan extensa si lo comparamos con los CMS más extendidos. https://pyrocms.com/

Canvas

Canvas Es un software open source enfocado en la creación de blogs. Desataca por su simplicidad y por ofrecer de forma incorporada estadísticas sobre las publicaciones que crees. Por ejemplo, puedes ver los registros de hora y fecha de los usuarios que visitan tu blog. https://trycanvas.app/

Monica

Monica Monica se podría definir como un sistema de administración de relaciones personales. Te permite almacenar información de tus amigos y familiares, como su fecha de cumpleaños, número de teléfono o anotar la última vez que hablaste con esa persona. Monica es open source y, si eres de las personas a las que se le suelen pasar las fechas importantes, esta puede ser una herramienta muy útil para ti. https://github.com/monicahq/monica

Acelle Mail

Acelle Mail En este caso, estaríamos hablando de un sistema de email marketing. Es un software que puede ser autoalojado en tu servidor, lo que se suele denominar como self hosted. Aunque para poder acceder a la totalidad del código es necesario realizar una compra, una vez adquirido tendrás acceso al código de la aplicación por completo. https://acellemail.com/

Flarum

Flarum Es una aplicación gratuita y de código abierto enfocada a la creación de foros. Posee una interfaz sencilla y limpia. Su rendimiento también es un punto a destacar, por lo que si estás pensando en implementar un foro en tu sitio web, montarlo a través de Flarum puede ser una gran alternativa. https://flarum.org/

Bagisto

Bagisto Es un ecommerce creado con Laravel y Vue.js. Cuenta con un panel de administración con una interfaz clara y fácil de entender. Entre sus características se encuentran opciones de configuración para crear atributos personalizados, estadísticas y la gestión de roles. Destaca su capacidad de multi-inventario, que puede gestionar el inventario entre varios canales, o su capacidad de crear tu tienda online en un marketplace. https://bagisto.com/en/

Conclusión

He de decir que, a título personal, soy una fan acérrima de Laravel. El primer contacto que tuve con este framework de PHP fue por 2015 y, desde entonces, he podido ver cómo ha evolucionado y mejorando en todos sus aspectos. Como resultado, si tuviera que recomendarte un framework de PHP para que empieces a formarte como desarrollador web, sin duda alguna te recomendaría Laravel. Con ello no te quiero decir que no pruebes otros frameworks o que Laravel sea mejor o peor que otros, pero sin duda es una gran elección si quieres adentrarte en el mundo del desarrollo web. Ya sea para crear proyectos personales o por motivos laborales, una vez que comiences a utilizarlo verás todas las ventajas que ofrece este framework. Y tú, ¿por qué quieres aprender Laravel? ¿Has trabajado antes con Laravel? Házmelo saber en los comentarios.
Patricia Álvarez
Patricia Álvarez

Programadora y diseñadora. Disfruto picando código y haciendo que las cosas se vean bonitas.

Artículos relacionados

Si te ha gustado este post, aquí tienes otros que pueden ser de tu interés. ¡No dejes de aprender!

Tenemos 3 comentarios en "Laravel: ¿Qué es y cómo funciona?"
Avatar del autor del comentario

Manuel

16/03/2023 a las 09:28
Me ha encantado tu articulo y la explicación muy clara. Me ha ayudado mucho. Gracias.
Responder
Avatar del autor del comentario

Andres Erazo

30/06/2023 a las 19:24
Agradezco este post, me ah animado a 'trastear' este framework, gracias.
Responder
Avatar del autor del comentario

Alvaro Fontela

03/07/2023 a las 16:01
Gracias por el comentario Andres!
Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Vienes desde otro proveedor?

¡Sin problema! Te migramos gratis y sin cortes
Migraciones de hosting gratis