INTRODUCCIÓN A LARAVEL

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.
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.
Características
- Sistema de ruteo, también RESTful
- Blade, Motor de plantillas
- Peticiones Fluent
- Eloquent ORM
- Basado en Composer
- Soporte para el caché
- Soporte para MVC
- Usa componentes de Symfony
- 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.
1
2
3
4
| <!--?php <br ?-->Route::get( 'usuario/listar' , function () { //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 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.
La forma de crear Modelos en Laravel usando Eloquent ORM, es tan simple como:
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.
La forma de crear Modelos en Laravel usando Eloquent ORM, es tan simple como:
1
2
3
4
| 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/listarEntonces, sólo bastaría crear la Ruta e interactuar con el modelo ‘Libro’ anteriormente creado, del modo siguiente:
1
2
3
4
| 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:
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:
1
2
| //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
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:
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:
1
2
| < meta charset = "UTF-8" /> @yield('titulo') |
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:
1
2
3
4
5
6
7
8
9
10
11
12
| <!-- identificando la plantilla a utilizar --> @extends('template') <!-- definiendo una zona --> @section('titulo') @stop <!-- definiendo otra zona --> @section('navegacion') @stop |
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.
Un ejemplo de un controlador en Laravel:
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:
1
2
3
4
5
6
7
| 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:
1
| Route::get( 'user/{id}' , 'UserController@mostrarPerfil' ); |
Porqué usar Laravel
- Incluye un ORM: a diferencia de CodeIgniter, Laravel incluye un ORM integrado. Por lo cual no debes instalar absolutamente nada. Ahora bien, yo no soy muy amigo de los ORM’s, están de moda y todo pero siento que están sobre-explotados. Hay que saber cuando utilizarlos, muchas veces dejan mucho que desear a nivel de rendimiento.
- Bundles: existen varios paquetes que extienden a Laravel y te dan funcionalidades increíbles.
- Es elegante y aprendes a programar con estilos. No más porquerías de códigos que no se entienden, aprenderás a programar ‘con clase’ y ordenar tu código de manera de que sea lo más re-utilizable posible.
- Puedes manejar tu base de datos desde la misma aplicación (vía código) y tener un control de versiones de lo que haces con ella. Esto se llama migrations. Es excelente herramienta, porque puedes manejar todo desde tu IDE, inclusive montar datos en tus tablas, todo desde la misma ventana y vía consola.
- Aprovecha de las ventajas de PHP 5.3. A diferencia de CodeIgniter que da soporte a versiones más antiguas haciendo que sea feo programar en él.
- Las rutas te permiten tener control de las peticiones. Una misma ruta puede responder de distinto modo a un método GET o POST. A diferencia de CodeIgniter, en Laravel no hay riesgo de que ‘descubran’ una ruta (URL) mientras no la hayas definido.
- Cuenta con su propio motor de plantillas HTML.
- El framework es actualizable utilizando composer update y listo, nada de descargar un ZIP y estar remplazando.
- La comunidad está viva. Todas mis dudas me las responden en menos de 5 minutos en el chat IRC, son todos muy amables.
Cosas que asustan de Laravel (a primera instancia)
- Debes acostumbrarte a utilizar la consola para realizar ciertas funciones. Conocerás Composer, el administrador de dependencias de PHP y Artisan el CLI de Laravel.
- La curva inicial de aprendizaje puede ser compleja si no has utilizado un framework o no manejas bien el lenguaje.
- La documentación no es tan completa como la de CodeIgniter, no hay tantos ejemplos y muchas cosas quedan en el aire.
Laravel simplemente me está haciendo un mejor desarrollador. Con él harás un desarrollo moderno y acorde a estándares. Para los que aún siguen programando en PHP de manera nativa, haciendo includes en todas partes, mezclando HTML con PHP a diestra y siniestra, realizando consultas a la DB en cualquier lugar… háganse un bien y prueben Laravel, o por lo menos partan con CodeIgniter.
0 comentarios: