Laravel

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Laravel
Laravel.png
Desarrollador
Taylor Otwell
http://www.laravel.com/
Información general
Última versión estable 4.2 [1]
19 de diciembre de 2013; hace 7 meses (2013-12-19)
Última versión en pruebas 4.3
Género Framework
Programado en PHP
Sistema operativo Multiplataforma
Licencia Licencia MIT

Laravel es un framework de código abierto para desarrollar aplicaciones y servicios web con PHP 5. 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]

Visión general[editar]

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[editar]

  • Sistema de ruteo, también RESTful[3]
  • Blade, Motor de plantillas[4] [5]
  • Peticiones Fluent[6]
  • Eloquent ORM[7]
  • Basado en Composer[8]
  • Soporte para el caché[9]
  • Soporte para MVC[10]
  • Usa componentes de Symfony[11]

Patrón MVC[editar]

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  
Route::get('usuario/listar', function() {  
      //punto de entrada de la petición HTTP  
      ...  
});

Modelo[editar]

Laravel incluye un sistema de mapeo de datos relacional llamado Eloquent ORM que facilita la creación de modelos. Este ORM se funda en patrón active record y su funcionamiento es muy sencillo. Es opcional el uso de Eloquent, pues también dispone de otros recursos que nos facilitan interactuar 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:

class Libro extends Eloquent {  
 
    //defiendo el nombre de la tabla con la info de los libros  
    public static $table = 'tb_libros';  
}

Incluso el código del modelo puede ser más simple aún, en el caso que el nombre de la tabla coincida con el nombre de la clase. Pues Laravel al igual que Ruby on Rails, usa el paradigma de programación donde se favorece "la convención sobre la configuración".Y si ahora necesitamos disponer un listado, en la ruta: http://mi-aplicacion.com/libro/listar Entonces, sólo 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[editar]

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 sobre todo cuando 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[editar]

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 sólo 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 Lavarel se usan dos archivos: la plantilla definiendo el HTML global y las zonas a incluir. Un sólo 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')
 
@stop
 
<!-- definiendo otra zona -->
@section('navegacion')
 
@stop

Controlador[editar]

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.

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 usándo rutas es:

Route::get('user/{id}', 'UserController@mostrarPerfil');

Influencia[editar]

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 320.000 veces<ref="packagist"></ref>, y se espera que supere en popularidad a otros frameworks ya establecidos más antiguos.

Referencias[editar]

  1. Otwell, Taylor (2013-12-19 02:51). «laravel/framework - Packagist» (en inglés). Consultado el 19 de diciembre de 2013.
  2. a b Desarrolladores de Laravel (ed.): «Introduccion - Documentation Laravel PHP Framework» (en inglés). Consultado el 14 de septiembre de 2013.
  3. Desarrolladores de Laravel (ed.): «Routing - Documentation Laravel PHP Framework» (en inglés). Consultado el 14 de septiembre de 2013.
  4. a b Desarrolladores de Laravel (ed.): «Templates - Documentation Laravel PHP Framework» (en inglés). Consultado el 14 de septiembre de 2013.
  5. Rees, Dayle. «Code Happy - Blade Templates» (en inglés). Consultado el 14 de septiembre de 2013.
  6. Desarrolladores de Laravel (ed.): «Query Builder - Documentation Laravel PHP Framework» (en inglés). Consultado el 14 de septiembre de 2013.
  7. a b Desarrolladores de Laravel (ed.): «Eloquent ORM - Documentation Laravel PHP Framework» (en inglés). Consultado el 14 de septiembre de 2013.
  8. Desarrolladores de Laravel (ed.): «Package Development - Documentation Laravel PHP Framework» (en inglés). Consultado el 14 de septiembre de 2013.
  9. Desarrolladores de Laravel (ed.): «Cache - Documentation Laravel PHP Framework» (en inglés). Consultado el 14 de septiembre de 2013.
  10. a b «Architecture of Laravel Applications - Laravel Book» (en inglés). Consultado el 14 de septiembre de 2013.
  11. «Laravel 4 - Laravel Wiki» (en inglés). Consultado el 14 de septiembre de 2013.

Enlaces externos[editar]