Documentacion Laravel
December 18, 2016 | Author: Adrián Ruiz | Category: N/A
Short Description
Download Documentacion Laravel...
Description
Documentacion Laravel 3.6-POO: Inyección de dependencias en Laravel (IV) Esta es la cuarta parte de la mini serie de inyección de dependencias en Laravel, lee la primera, la segunda y la tercera antes de continuar. Necesitas conocimientos básicos de Laravel y POO para hacer este tutorial. Vimos en capítulos anteriores que la inyección de dependencias, pese a su nombre complicado, es realmente un concepto simple que permite escribir objetos “desacoplados”, es decir, que no sean dependientes uno del otro. La inyección de dependencias nos permite diseñar ORMs que en vez de estar atado a un solo motor de DB, reciban como parámetro clases MySQL o Postgresql o incluso de MongoDB que funcionen siempre que cumplan con una “interfaz”. El “contenedor de inyección de dependencias” es como una máquina ensambladora que conecta una parte con otra y hace que todo el sistema funcione. También vimos que manipular las dependencias de nuestro sistema puede ser difícil, por eso el contenedor de Laravel es inteligente, y aún así sigue siendo simple! Para demostrarlo les creé un demo. Bien ahora dejémonos de demos y vamos a usar el contenedor real de Laravel! Para enseñarles cómo usar la inyección de dependencias en Laravel necesito 3 pasos: Primero crearemos una clase de ejemplo y luego la integraremos con el contenedor de Laravel.
Paso 1: Clase Alert de ejemplo Yo creé para uds. una mini versión de mi clase Alert que es un helper para enviar mensajes del controlador a las vistas, en mi caso uso los estilos de Bootstrap pero es adaptable.
Uso de ImageResize
Código :
¿Qué otra clase pudiera heredar ImageBase?
¿Que tantas clases puede crear con la libreria gd de php? Captcha: una clase que genere captcha.Gráficos: una clase que genere gráficos.Thumbs: si no te gusta ImageResize, mejorala o crea tu propia clase. ¿Se te ocurre una otra? Comenta aquí. Nota: la implementación de ambas clases se pueden mejorar. La única intención de estas implementaciones es mostrar un ejemplo real de como se deben usar y lo útil que son las clases abstractas.
1.3 - Porqué elegir Laravel en vez de Codeigniter Empezar a programar con PHP nunca ha sido sencillo. El sitio oficial tiene una documentación muy completa de todas las funcionalidades del lenguaje, sin embargo, no es un buen punto de partida para aprender a hacer algo funcional, por ejemplo un módulo con PHP.
Empezando mi carrera autodidacta para ser desarrollador web, recuerdo que imprimí TODA la documentación de PHP y la leí completa durante unas vacaciones.
Hice lo mismo con la documentación de MySQL. Al final no sabía hacer NADA.
Sí me sirvió de referencia aprender qué hacían las funciones del lenguaje, aunque hoy en día sigo consultando el sitio a menudo.
Entonces comencé a buscar tutoriales más prácticos de PHP. Por ejemplo las memorias de un aprendiz. ¿Alguien lo recuerda?
Pero hoy en día si quieres trabajar con PHP además tienes que: Elegir el Framework adecuado
Esto quiere decir que tenga:
Un desarrollo activo: te garantiza corrección de problemas de seguridad, mejoras, etc. Una comunidad activa: la vas a necesitar cuando no sepas cómo hacer algo. Buena documentación: puede ser el mejor framework del mundo pero si nadie sabe cómo usarlo no sirve de nada.
Pero la mayoría de los frameworks ya tienen eso: Symfony, Codeigniter, Laravel, entre otros, entonces: ¿Cuál framework elegir?
Hace unos años atrás era una respuesta difícil, mi decisión estaba entre Symfony y Codeigniter, a mí me gustaba más Symfony pero mi equipo de trabajo prefería el segundo.
Symfony era y sigue siendo complejo, muy difícil de aprender, por otro lado, CodeIgniter muy fácil de aprender porque es muy simple, carece de muchas utilidades necesarias en un verdadero framework.
En Symfony 1.4 gastaba el 80% del tiempo investigando cómo hacer algo y corrigiendo bugs y el 20% ejecutando, mientras que en CodeIgniter solo 20% investigando pero 80% ejecutando. De vuelta al 2013
Hoy en día Symfony 2 es el framework para PHP más robusto que existe, Fabien Potencier, su creador, es una máquina escribiendo código. Es increíble tener en PHP componentes como el DOM crawler (disponible también en Laravel) que te permite recorrer y revisar desde PHP el código HTML
como lo harías conFirebug y eso se lo debemos a Fabien.
Sin embargo, Symfony parece no estar escrito para seres humanos. Sólo algunos pocos privilegiados son capaces de aprovechar todo su potencial.
Lo que hace que muchos se hayan ido a CodeIginter, pero… Porqué elegir Laravel en vez CodeIgniter
CodeIgniter no ofrece nada más allá de sencillez, después de leerte su documentación en un día y tener que enfrentarte a las necesidades de un proyecto real quedas en frente de una carpeta de modelos vacía preguntándote ¿Y ahora qué? Es allí donde:
Si eres experto, instalas plugins o construyes un sub-framework encima de CodeIgniter para suplir sus carencias. Si eres principiante empiezas a lanzar un montón de líneas de código en un controlador.
Codeigniter miente y no tiene ORM propio
Sólo tiene un constructor de queries que ellos dicen que es una versión “modificada” del patrón de diseño Active Record pero eso es falso.
El patrón Active Record permite trabajar tus tablas como si fueran clases y tus filas como objetos, con Laravel puedes (así como con Ruby on Rails): Código : $user = new User; $user->name = „Duilio‟; $user->save(); // This is awesome
En Codeigniter sería esto: Código : $this->db->insert(„users‟, array(„name‟ => „Duilio‟); // No active record at all
PHP 5 en adelante está orientado a poner a disposición de sus programadores el potencial de la programación orientada a objetos. Si bien el enfoque de la base de datos de Codeigniter fue funcional en un tiempo, ya quedó en el pasado.
Laravel en constraste tiene un ORM llamado Eloquent y además tiene un constructor de queries llamado Fluent, ambos superan al “Active record” del otro framework.
No incentiva al uso de plantillas en las vistas
En Codeiginiter: Código :
Contrastado con Laravel: Código :
@foreach ($addressbook as $name)
{{ $name }}
@endforeach
La documentación de CodeIgniter miente de nuevo al decir que los pseudolenguajes de plantillas, como el sistema de plantillas Blade de Laravel, son más lentos en ejecutarse. Esto no es cierto porque todos al final se compilan a código PHP, y lo que se leerá una y otra vez será PHP y no pseudolenguaje.
CodeIgniter ofrece un parser de plantillas muy simple, pero éste pierde el concepto de un VERDADERO lenguaje de plantillas: convertir etiquetas de a {{ name }} es sólo la punta del iceberg.
Un verdadero lenguaje de plantillas debe tener herencia de plantillas (layouts) y muchas otras características que Smarty, Twig poseen, allí Blade de Laravel no se queda muy atrás.
Super Controlador al rescate...
Como Codeigniter es tan básico, muchos programadores terminan escribiendo la mayor parte de la lógica de sus aplicaciones en un solo lugar: el controlador.
Por ejemplo la clase de rutas es tan simple, que se queda corta en los proyectos de la vida real y no queda más que lidiar con los segmentos de las URL desde el controlador, donde ya tu aplicación debería saber qué hacer.
Incluso en el mismo núcleo de Codeigniter, el controlador es una especie de super clase que está a cargo de casi todo, como lo demuestra esta imagen:
Al tratar de solucionar todos los problemas en una sola capa estarás escribiendo un código difícil de leer y mantener y no estarás aprovechando las funcionalidades que un framework en el año 2013 debe tener para ti.
Laravel tiene rutas, modelos, eventos, filtros, etc. que permiten que tus
controladores puedan verse así: Código : public function edit($user) { return View::make('admin.users.form')->with('form', $form); }
Puedes configurar una URL users/{id} para que Laravel consulte la BD por ti, te traiga el usuario correspondiente a la ID o lance un 404 si no es encontrado, todo eso antes de llegar al controlador.
En contraste con lo que sería Codeigniter: Código : public function edit($id) { $user = $this->db->select('users', array('id' => $id));
if (is_null ($user)) $this->error404();
//etc... }
Revisen la documentación de Codeigniter vs la de Laravel en el tema de rutas y comparen la diferencia. Laravel es FÁCIL Hace años justificaba que la gente trabajara con Codeigniter, Symfony es muy complejo y otras alternativas como CakePHP son inciertas. Hoy en día en el mundo de PHP tenemos un framework que está bien hecho, combina las mejores prácticas de desarrollo y hace que nosotros, programadores de PHP podamos escribir un código del cual sentirnos orgullosos. En tu primer proyecto con Laravel usarás el 40% del tiempo para documentarte, otro 40% para desarrollarlo y un 20% para contemplar cuán genial quedó tu código. ¡Saludos!
2 - Introducción a Laravel Laravel es uno de los frameworks más fáciles de aprender para PHP, yo diría que tan fácil como Codeigniter. Sin embargo en Laravel, fácil no quiere decir simple. Este potente framework combina los features más modernos de PHP para brindarnos una interfaz elegante y hasta divertida de usar: ¿Quieren una ruta? Código : //
En
Route::get(„welcome‟, return
app/routes.php: function()
“Bienvenidos
a
{ Laravel”;
});
¿Ahora quieren usar vistas con HTML? Código :
Bienvenidos a Laravel
¿Quieren que la vista tenga un header y un footer? Laravel usa un concepto más potente llamado Layout. Cambiamos nuestra plantilla welcome.blade.php a: Código :
@extends(„layout‟)
@section(„content‟) Bienvenidos
a
Laravel
@stop
Y ahora creamos nuestro Layout
Código : html>
Hacer vistas en Laravel es muy sencillo @yield(„content‟)
Cuando usemos nuestra vista "welcome", Laravel cargará automáticamente la vista layout por nosotros, y reemplazará en la
plantilla layout la línea @yield('content') por todo el HTML que hayamos escrito en la plantilla welcome entre @section('content') y stop, quedando el resultado así: Código :
Hacer vistas en Laravel es muy sencillo Bienvenidos
a
Laravel
De esta forma tendremos 1 solo layout que usaremos en todas nuestras vistas, evitando repetir el código. Ahora usar nuestras vistas es tan fácil como esto: Código : Route::get(„welcome‟, return
function()
{
View::make(„welcome‟);
});
Y así en adelante ¿Quieren hacer una redirección? Código :
return Redirect::to(„goodbye‟)
¿Generar una URL? Código : URL::to(„welcome‟)
¿Que tal si quisiéramos pasar parámetros dinámicos a nuestra vista? Tan fácil como esto: Código : View::make(„welcome‟)->with(„name‟, „Duilio‟);
Nuestra vista welcome.blade.php quedaría de la siguiente manera: Código : Bienvenido, {{ name }}
O así (si prefieren usar PHP directamente): Código : Bienvenido,
Características de la versión 4 de Laravel
Lo más interesante de la versión 4 de Laravel es que detrás de toda esta interfaz tan fácil de usar se esconde una arquitectura bastante sólida (SOLID). Por ejemplo, los métodos estáticos que vimos hace poco no son más que una fachada (Facade). Por debajo se hace el llamado al contenedor de Laravel, el cual maneja todas las dependencias entre las clases del framework y de nuestra aplicación. Tanto si entendiste o no el último párrafo, tanto si eres un entusiasta que busca hacer sitios web de forma rápida y simple, o eres un experto que busca crear una robusta aplicación, fácil de mantener y probar: Laravel es el framework para ti. La idea de este set de tutoriales es enseñarlos a usar Laravel desde lo más básico (rutas, vistas, formularios, bases de datos) hasta lo más avanzado (inyección de dependencias, pruebas unitarias).
2.1 - Cómo Composer
instalar
Laravel
y
En el capítulo anterior de Introducción a Laravel les mostré un poco sobre la fácil sintáxis de Laravel. También les mencioné brevemente que detrás de esta interfaz que nos permite casi hablarle al framework: “redireccioname a”, “haz una vista… con este parámetro/valor”, debajo de todo eso se esconde una arquitectura SÓLIDA de desarrollo, haciendo a Laravel un framework de PHP ideal tanto para principiantes como para expertos. Mi intención era despertar la curiosidad en la herramienta, si estás acá, quizás tuve éxito. Ahora es momento de ver cómo instalar Laravel y Composer.
Requisitos para Instalar Laravel
Laravel es un framework para PHP, obviamente tiene como requisito tener instalado... PHP, en este caso, la versión de PHP 5.3.2. Además necesitaremos laextensión MCrypt de PHP. También necesitan un servidor web como Apache y una base de datos como MySQL. Hay cientos de artículos sobre cómo conseguir todo esto, también hay herramientas como XAMPP que instalan todo esto por tí.
Más adelante necesitarán el módulo Rewrite (mod_rewrite) de Apache. Si han trabajado antes con otros frameworks sabrán de qué les hablo, sino, por ahora les comento que es un módulo que hace posible URLs amigables como las de Cristalab: Código : cristalab.com/tutoriales/introduccion-a-laravel-c111339l/
En vez de:Código : cristalab.com/tutoriales.php?id=c111339I.
Estas son útiles para los motores de búsqueda y también para los usuarios. En otro tutorial hablaremos de esto. También necesitarán un conocimiento básico de PHP, es un
“plus” si saben de programación orientada a objetos o si ya han usado otros frameworks. Igual trataré de explicar todo detalladamente y además tenemos la sección de comentarios donde pueden hacer preguntas, con suerte además de mí, otros usuarios también quieran ayudar a aclarar dudas.
Cómo instalar Laravel y Composer
Si tienen experiencia con PHP sabrán que éste es un lenguaje interpretado, básicamente una library para PHP (un framework por ej.) no es más que una serie de archivos .php dentro de carpetas dentro de sub-carpetas, y para instalarlo por lo general no hace falta más que descargar archivos de un repositorio GIT o de una página, descomprimirlos en algún lado y listo. Para instalar Laravel 4, hace falta un paso extra. Pero no nos preocupemos, en realidad es una ventaja que nos pondrá no sólo a Laravel sino a miles de paquetes a nuestra disposición, me refiero a Composer.
Composer
Composer es un excelente manejador de paquetes y dependencias entre paquetes para PHP.
¿Qué son dependencias y paquetes?
Imagina que tienes un pequeño proyecto como ir de viaje de una ciudad a otra y para hacerlo necesitas un medio de transporte, en este caso, digamos, un automóvil. Si fueras un programa de software el automóvil sería un paquete, y tu viaje sería la aplicación que "depende" de él. Entonces, en este caso, Composer viene siendo como el personaje Tank de la película Matrix, tú le dices “Composer, necesito un auto para mi viaje” y Composer se encarga de buscar el paquete auto e instalarlo para ti. Luego “auto” le dirá a Composer que necesita también un paquete motor, otro paquete sistema de frenos, y así sucesivamente. Composer irá buscando e instalando cada paquete y las dependencias de cada subpaquete, recursivamente, hasta armar el auto, todo lo cual será transparente para ti.
Cómo instalar Composer
Aquí tienen las instrucciones de la página oficial, básicamente hay dos formas:
Instalar Composer en Linux:
Ejecuten desde su consola el siguiente comando: Código : curl -sS https://getcomposer.org/installer | php
O si no tienen CURL instalado: Código : php
-r
"eval('?>'.file_get_contents('https://getcomposer.org/installer' ));"
Si todo sale bien ya podrán usar Composer con el siguiente comando: Código : php composer.phar
Instalar Composer globalmente. Es mejor instalar y tener disponible Composer en todo todo el sistema, para ello hay que renombrar el archivo a “composer” (sin extensión) y moverlo a /usr/local/bin. Si no tienes el directorio /usr/local/bin puedes ejecutar echo $PATH en la consola para obtener las carpetas adecuadas.
Instalar Composer en Windows:
Descarga el instalador desde aquí o desde la página oficial (para desconfiados), ejecútalo y presiona: siguiente, siguiente, finalizar.
También les hará falta una consola de GIT, yo uso ésta. Mismo proceso: descarguen, ejecuten, siguiente, siguiente, finalizar.
Instalar Laravel
Una vez instalado composer, usando la consola/terminal (si estamos en Windows usaremos la consola de GIT que recien instalamos), vamos a nuestra carpeta de proyectos, por ejemplo: cd /var/www o /home/usuario/proyectos_web/ o /c/xampp/httpdocs/ y allí tipeamos: Código : composer create-project laravel/laravel pruebalaravel
Para usuarios de Linux que no instalaron Composer globalmente:
(El comando sería php composer.phar y necesitarían obviamente tener el archivo composer.phar en la misma carpeta desde donde ejecutan el comando) Tiempo de ir por un café. Mientras nos tomamos un descanso, Composer se encargará de descargar el proyecto base de Laravel, el framework y todas sus dependencias. Si son curiosos verán cómo la consola va descargando decenas de paquetes que serán usados por Laravel más adelante.
Algunos de estos paquetes pertenecen al framework Symfony.
¿Symfony? Sí, antes cuando elegíamos un framework como Codeigniter, Symfony o Cake, elegíamos una herramienta y descartábamos las otras. Si nos gustaba lo fácil que era Codeigniter pero también nos gustaba el ORM de symfony 1.4 teníamos que decidirnos por uno o por otro, o elegir Codeigniter y buscar en foro tras foro cómo integrar el ORM usado por symfony nativamente (Doctrine 1.2 en este caso) en Codeigniter, cruzar los dedos y esperar que todo saliera bien. O supongamos que queríamos crear un nuevo CMS para PHP, pero
aún así estábamos totalmente satisfechos con la forma en cómo symfony maneja las rutas. No había forma fácil de usar sólo las rutas de symfony, porque era un framework "acoplado" y teníamos que elegir usar todo o nada. Con la salida de proyectos como Symfony 2 y Composer, esto cambió radicalmente. De hecho la versión Symfony 2 fue liberada como un conjunto de componentes que pueden ser usados por separado, de manera que proyectos como Drupal 8 integran ciertos componentes de Symfony, y así lo hace Laravel.
Todo lo cual lleva el desarrollo de PHP a otro nivel, donde nosotros, los programadores podemos aprovechar el trabajo de otros y fácilmente poner parte de nuestro trabajo al alcance de otros, en vez de seguir reinventando la rueda una y otra vez.
Pero volviendo a la instalación de Laravel... Una vez que se complete la descarga de los paquetes, verificamos nuestro directorio, el cual debe lucir similar a éste:
..con todas las carpetas instaladas por Composer. Y, como personas impacientes que somos, también iremos corriendo al navegador, y tipearemos, en mi caso: Código : http://localhost/laravelpruebas/public
Directorio público:
(Es importante acceder a la carpeta /public que es la puerta de nuestro proyecto para la web, más adelante veremos esto en detalle) Y
si
todo
ha
salido
bien:
Si leíste “you have arrived” en tu navegador, estás listo para la tercera parte, sino tienes varios días, los comentarios de abajo y Google para investigar qué salió mal y prepararte para la siguiente entrega, donde explicaré lo que contienen las carpetas y archivos instalados por Composer, entre otros temas. Stay tuned
2.2 - Configurar Base de Datos y crear tablas con Laravel En los tutoriales anteriores, vimos una introdución al framework Laravel y aprendimos cómo instalar Laravel y Composer. De ahora en adelante comenzaremos un tutorial teórico - práctico de Laravel.
Crear un módulo de Usuarios con Laravel
Si bien no es el módulo más emocionante del mundo, lo considero práctico dado que hace falta en la mayoría de las aplicaciones. Para comenzar, necesitamos configurar nuestra base de datos y crear la tabla de usuarios.
Cómo configurar la base de datos en Laravel
Lo haremos en cuatro sencillos pasos: 1 - Abrimos el archivo database.php localizado en: Código : app/config/database.php
2 - En la línea 29, encontraremos lo siguiente: Código :
'default' => 'mysql'
Si estamos trabajando con MySQL, como es mi caso, dejaremos la línea intacta, sino editaremos el valor entre comillas a sqlite, pgsql, etc. según sea el caso. Entre las bases de datos soportadas por defecto en Laravel encontramos: MySQL, SQL Lite, PostgreSQL y SQL Server. 3 - Usamos PHPMyAdmin o cualquier otra herramienta de nuestra preferencia para crear la base de datos, en mi caso, con PHPMyAdmin y MySQL crearé una DB llamada “pruebalaravel”: Código : CREATE DATABASE `pruebalaravel` ;
4 - Una vez creada la DB debemos indicarle a Laravel el nombre de nuestra base de datos y un usuario con acceso a ella, para MySQL tenemos en el mismo archivo database.php lo siguiente (línea 55): Código : 'mysql'
=>
'driver'
array( =>
'host'
=>
'database'
=>
'username' 'password'
=>
'mysql', 'localhost',
'pruebalaravel', =>
'root',
'CLAVE_ULTRA_SECRETA',
'charset' 'collation'
=> =>
'utf8',
'utf8_unicode_ci',
'prefix'
=>
'',
),
Allí cambiamos „database‟ por el nombre de nuestra base de datos: Código : 'database'
=> 'pruebalaravel',
Y más abajo el usuario que hayan configurado cuando instalaron MySQL, comúnmente „root‟, luego, en la línea siguiente, el password que dependiendo de su instalación pudiese estar en blanco o ser una clave ultra secreta. Una vez configurada la DB, veamos:
Cómo crear las tablas en la base de datos con Laravel
Para ello usaremos migraciones. Las migraciones permiten configurar y modificar la estructura de una base de datos. Creando una especie de “control de versiones” de base de datos que puede ser usada por una o más personas dentro del equipo de desarrollo. Por ejemplo:
Inicialmente crearemos una tabla llamada “users”. En unas semanas necesitaremos otra tabla llamada “tasks”. Luego agregaremos un campo adicional llamado “role” en la tabla “users” para dividir los administradores de los usuarios normales. Cada uno de estos pasos implicará crear una migración diferente con la que el framework sabrá cómo modificar la base de datos, tanto hacia el nuevo esquema (del paso 1 al paso 2) como al esquema anterior (por ejemplo: de vuelta al paso 2 desde el paso 3). Ahora veamos:
Cómo instalar el sistema de migraciones en Laravel
Abrimos nuestra consola o terminal (recuerden usar la consola instalada por GIT si usan Windows) y tipeamos lo siguiente: Código : php artisan migrate:install
Artisan es la interface de comandos de consola que trae Laravel Si configuramos bien la base de datos deberíamos recibir el siguiente mensaje: Código : Migration table created successfully
(Sino recibes este mensaje, vuelve al punto anterior sobre configurar la base de datos y revisa que todo esté bien) ¿Tabla de migración creada con éxito? Sí, si vuelves a tu herramienta de base de datos (ej. PHPMyAdmin) verás la siguiente tabla:
Esta es una sencilla tabla que usa Laravel para conocer el estado de la migración en tu servidor, por ahora está vacía. Siguiente paso:
Crear nuestra primera migración con Artisan y Laravel
Para ello ejecutamos el siguiente comando: Código : php artisan migrate:make create_user_table
Si todo salió bien, recibiremos un mensaje similar a éste: Código : Created
Migration:
2013_09_03_211545_create_user_table
Generating optimized class loader
El primer mensaje (migración creada…) nos indica que fue creado el archivo donde vamos a:
Crear el esquema de nuestra tabla usando el Schema Builder
Abrimos el archivo localizado en: Código : app/database/migrations/2013_09_03_211545_create_user_table.php
El nombre del archivo además de lo especificado por nosotros (create_user_table) contiene una fecha/hora que permite indicarle al framework el orden en que fueron creadas las migraciones, en mi caso 2013_09_03_21... Ok, abrimos el archivo, tenemos la siguiente estructura: Código :
View more...
Comments