Laravel
Laravel es un framework de código abierto para desarrollar aplicaciones y servicios web con PHP 5, PHP 7 y PHP 8. Su filosofía es desarrollar código PHP de forma elegante y simple, evitando el "código espagueti". Fue creado en 2011 y tiene una gran influencia de frameworks como Ruby on Rails, Sinatra y ASP.NET MVC.[2]
Laravel | ||
---|---|---|
![]() | ||
Información general | ||
Tipo de programa | Framework | |
Desarrollador | Taylor Otwell | |
Modelo de desarrollo | Código abierto | |
Lanzamiento inicial | 9 de junio de 2011 | |
Licencia | Licencia MIT | |
Información técnica | ||
Programado en | PHP | |
Versiones | ||
Última versión estable | 9.8.1 [1] ( 13 de abril de 2022 (5 meses y 1 día)) | |
Enlaces | ||

Visión general
Laravel tiene como objetivo ser un framework que permita el uso de una sintaxis elegante y expresiva para crear código de forma sencilla y permitiendo multitud de funcionalidades. Intenta aprovechar lo mejor de otros frameworks y aprovechar las características de las últimas versiones de PHP.[2]
Gran parte de Laravel está formado por dependencias, especialmente de Symfony, esto implica que el desarrollo de Laravel dependa también del desarrollo de sus dependencias.
Características
Patrón MVC
Laravel propone en el desarrollo usar 'Routes with Closures', en lugar de un MVC tradicional con el objetivo de hacer el código más claro. Aun así permite el uso de MVC tradicional.[10]
<?php
//punto de entrada de la petición HTTP
...
});
Modelo
Laravel incluye un sistema de mapeo de datos relacional llamado Eloquent ORM que facilita la creación de modelos. Este ORM se funda en un patrón active record. Es opcional el uso de Eloquent, pues también dispone de otros recursos que facilitan la interacción con los datos, o específicamente la creación de modelos.[7]
La forma de crear Modelos en Laravel usando Eloquent ORM, es tan simple como:
use Illuminate\Database\Eloquent\Model;
class Libro extends Model {
//defiendo el nombre de la tabla con la info de los libros
protected $table = 'tb_libros';
}
El código del modelo puede ser más simple en el caso que el nombre de la tabla coincida con el nombre de la clase, ya que Laravel, al igual que Ruby on Rails, usa el paradigma de programación donde se favorece "la convención sobre la configuración". Si ahora necesitamos disponer un listado, en la ruta: http://mi-aplicacion.com/libro/listar Entonces, solo bastaría crear la Ruta e interactuar con el modelo 'Libro' anteriormente creado, del modo siguiente:
Route::get('libro/listar', function() {
$libros = Libro::all();
return View::make('mi_vista', $libros); //Muestra los datos
});
Vista
Laravel incluye de paquete un sistema de procesamiento de plantillas llamado Blade. Este sistema de plantillas favorece un código mucho más limpio en las Vistas, además de incluir un sistema de Caché que lo hace mucho más rápido. El sistema Blade de Laravel, permite una sintaxis mucho más reducida en su escritura.[4] Por ejemplo, en vez pintar la vista usando el código PHP:
<?php echo $mi_nombre; ?>
En Blade se escribiría:
{{$mi_nombre}}
Lo cual no es una gran ventaja, siempre es posible usar una expresión resumida en PHP. No obstante, lo que si es una gran ventaja, es el modo en que Blade maneja las plantillas.
Plantillas.
Las plantillas en Blade son archivos de texto plano que contiene todo el HTML de la página con etiquetas que representan elementos o zonas a incluir en la plantilla, o vistas parciales como se conocen en otros frameworks PHP. Sin embargo, en Blade estos elementos incrustados se organizan en un solo archivo. Esta es una idea muy interesante de Laravel que mejora la organización de las vistas y su rendimiento. Sobre todo cuando las vistas pueden llegar a ser muy complejas incluso con elementos anidados. En el render de una Vista completa en Laravel se usan dos archivos: la plantilla definiendo el HTML global y las zonas a incluir. Un solo archivo, la Vista, con los elementos (partial views).
Un ejemplo típico para una plantilla HTML5 de Blade:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>@yield('titulo')</title>
</head>
<body>
@yield('navegacion')
</body>
</html>
En la plantilla presentada, el código @yield() identifica al método donde como parámetro se indica el nombre de la zona desplegar. Por otro lado, el código de la vista, donde se define la plantilla a usar y la información de las distintas zonas a desplegar:
<!-- identificando la plantilla a utilizar -->
@extends('template')
<!-- definiendo una zona -->
@section('titulo')
@endsection
<!-- definiendo otra zona -->
@section('navegacion')
@endsection
Controlador
Los controladores contienen la lógica de la aplicación y permiten organizar el código en clases sin tener que escribirlo todo en las rutas. Todos los controladores deben extenderse de la clase BaseController además de eso
Un ejemplo de un controlador en Laravel:
class UserController extends BaseController {
public function mostrarPerfil($id)
{
$user = User::find($id);
return View::make('user.profile', array('user' => $user));
}
}
Estos pueden ser llamados en las rutas de diferentes maneras, pero la más común usando rutas es:
Route::get('user/{id}', [\App\Http\Controllers\UserController::class, 'mostrarPerfil']);
Influencia
La influencia de Laravel ha crecido rápidamente desde su lanzamiento. En la comunidad de desarrolladores es considerado como alternativa sencilla de usar pero que tiene todas las funcionalidades que debe tener un framework. Ha sido descargado más de 20'500,000 de veces, y se espera que supere en popularidad a otros frameworks ya establecidos más antiguos.
Referencias
- «Release v9.8.1 · laravel/framework · GitHub» (en inglés). Consultado el 13 de abril de 2022.
- Desarrolladores de Laravel (ed.). «Introduccion - Documentation Laravel PHP Framework». http://laravel.com (en inglés). Archivado desde el original el 29 de septiembre de 2013. Consultado el 14 de septiembre de 2013.
- Desarrolladores de Laravel (ed.). «Routing - Documentation Laravel PHP Framework». http://laravel.com (en inglés). Consultado el 14 de septiembre de 2013.
- Desarrolladores de Laravel (ed.). «Templates - Documentation Laravel PHP Framework». http://laravel.com (en inglés). Archivado desde el original el 16 de septiembre de 2013. Consultado el 14 de septiembre de 2013.
- Rees, Dayle. «Code Happy - Blade Templates» (en inglés). Consultado el 14 de septiembre de 2013.
- Desarrolladores de Laravel (ed.). «Query Builder - Documentation Laravel PHP Framework». http://laravel.com (en inglés). Consultado el 14 de septiembre de 2013.
- Desarrolladores de Laravel (ed.). «Eloquent ORM - Documentation Laravel PHP Framework». http://laravel.com (en inglés). Archivado desde el original el 22 de septiembre de 2014. Consultado el 14 de septiembre de 2013.
- Desarrolladores de Laravel (ed.). «Package Development - Documentation Laravel PHP Framework». http://laravel.com (en inglés). Consultado el 14 de septiembre de 2013.
- Desarrolladores de Laravel (ed.). «Cache - Documentation Laravel PHP Framework». http://laravel.com (en inglés). Consultado el 14 de septiembre de 2013.
- «Architecture of Laravel Applications - Laravel Book» (en inglés). Consultado el 14 de septiembre de 2013.
- «Laravel 4 - Laravel Wiki» (en inglés). Archivado desde el original el 8 de septiembre de 2013. Consultado el 14 de septiembre de 2013.
- «PSR-2 Guía de estilo de codificación». Archivado desde el original el 10 de mayo de 2015. Consultado el 29 de julio de 2015.
- «PSR-4 Autoloader» (en inglés). Consultado el 29 de julio de 2015.
- «PHP Standards Recommendations» (en inglés). Consultado el 26 de julio de 2017.