Laravel 5.1
Framework para artesanos web
René Sandoval
¿Qué es Laravel?
• Laravel es un framework MVC para PHP desarrollado por Taylor
Otwell (@taylorotwell).
• Su objetivo es reducir el tiempo de desarrollo eliminando las
tareas tediosas y facilitando una sintaxis clara y concisa.
¿Por qué Laravel?
• Sintaxis expresiva
• Limpio (Con poco código se hace mucho)
• Curva de aprendizaje baja (Simple)
• Aprovecha al máximo las últimas características de PHP
• Integrado con Composer
• Integrado con Git
Comenzando con Laravel
• Instalación
Se puede instalar con composer y laravel installer
composer global require "laravel/installer=~1.1"
laravel new blog
Se puede instalar directamente usando composer
composer create-project laravel/laravel --prefer-dist
• Configuración Básica
• En config/app.php tenemos toda la configuración básica de la app
• Para realizar configuraciones locales utilizamos el archivo .env
Componentes Básicos
• Rutas
• Controladores
• Vistas
• Modelo
• ORM (Eloquent)
• Query Builder (Fluent)
• Migraciones
• Seeders
• Artisan (CLI)
Rutas
• Utilizamos el archivo app/Http/routes.php
• Definimos todas las rutas que va a tener nuestra aplicación
• Podemos elegir el verbo con el cual va a responder la ruta.
• En proyectos simples, podemos usar Closures para implementar
las respuestas de las rutas.
Definiciones Básicas
// Un solo verbo
Route::get('/', function () {
return 'Hello World';
});
Route::post('foo/bar', function () {
return 'Hello World';
});
Route::put('foo/bar', function () {
//
});
Route::delete('foo/bar', function () {
//
});
// Con varios verbos
Route::match(['get', 'post'], '/', function () {
return 'Hello World';
});
// Con parámetros requeridos
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
Route::get('posts/{post}/comments/{comment}', function
($postId, $commentId) {
//
});
Controladores
• En vez de definir la lógica de cada ruta en routes.php, se
pueden utilizar clases que extiendan de la clase Controller.
• Los controladores pueden agrupar las solicitudes HTTP
relacionadas y manejarlas dentro de la clase.
Controladores Básicos
Route::get('user/{id}', 'UserController@showProfile');
Controladores para RESTFul
Route::resource('photo', 'PhotoController');
Verb Path Action Route Name
GET /photo index photo.index
GET /photo/create create photo.create
POST /photo store photo.store
GET /photo/{photo} show photo.show
GET /photo/{photo}/edit edit photo.edit
PUT/PATCH /photo/{photo} update photo.update
DELETE /photo/{photo} destroy photo.destroy
Controladores Implícitos
Route::controller('users', 'UserController');
Vistas
Laravel incluye un sistema de plantillas llamado Blade.
Este sistema permite:
• Realizar herencia de plantillas.
• Incluir secciones.
• Sobrescribir secciones.
• Escribir estructuras de PHP de forma resumida aunque nos
permite escribir instrucciones de PHP normales
Definiendo un Layout
Herencia de Plantillas
Incluir Secciones
Mostrar datos
Escribir estructuras de PHP resumidas
ORM Eloquent
• El ORM, llamado Eloquent, incluido en Laravel provee una
implementación elegante y sencilla de ActiveRecord (registro
activo) para trabajar con la base de datos.
• Cada entidad de la base de datos tiene un "Modelo" asociado,
el cual se utiliza para interactuar con esa tabla.
$count = AppFlight::where('active', 1)->count();
$max = AppFlight::where('active', 1)->max('price');
//Recupera por id
$flight = AppFlight::find(1);
// Recupera el primer registro que coincide con el filtro
$flight = AppFlight::where('active', 1)->first();
//Guarda un nuevo Registro
$flight = new Flight;
$flight->name = $request->name;
$flight->save();
Query Builder - Fluent
• Laravel nos provee un Database Query Builder, el cual nos permite
crear y ejecutar consultas en la base de datos. Esto puede ser
usado para ejecutar la mayoría de las operaciones habituales y
trabaja con los sistemas de base de datos soportados por Laravel
• A diferencia de el ORM, utiliza StdClass para representar los
objetos.
$users = DB::table('users')->get();
$user = DB::table('users')->where('name', 'John')->first();
$email = DB::table('users')->where('name', 'John')->value('email');
Migraciones
• Las migraciones son como un control de versiones para nuestra
base de datos.
• Nos permite fácilmente modificar y compartir el esquema de la
base de datos de nuestro proyecto, especialmente útil para
trabajar en equipos.
Seeders
• Laravel incluye un método simple para llenar nuestra base de
datos con datos de prueba usando clases Seed.
• Las clases Seed pueden tener el nombre que querramos, pero
por convención nos conviene utilizar la forma UserTableSeeder.
• Por defecto, el proyecto cuenta con la clase DatabaseSeeder,
donde podemos hacer llamadas a las diferentes clases Seeder
que vamos creando.
Artisan (CLI)
• Es una Command Line Interface extensible que permite realizar
fácilmente operaciones habituales en el Framework, como la
creación de Controllers, Modelos o ejecutar migraciones y
seeding.
• Podemos armar nuestros propios comandos, extendiendo la
clase Command.
Herramientas
• Laravel.com
• Laracasts.com
• Styde.net
• Laraveles.com
• Laravel-news.com
Se
acabo!
René Sandoval

Laravel 5.1

  • 1.
    Laravel 5.1 Framework paraartesanos web René Sandoval
  • 2.
    ¿Qué es Laravel? •Laravel es un framework MVC para PHP desarrollado por Taylor Otwell (@taylorotwell). • Su objetivo es reducir el tiempo de desarrollo eliminando las tareas tediosas y facilitando una sintaxis clara y concisa.
  • 3.
    ¿Por qué Laravel? •Sintaxis expresiva • Limpio (Con poco código se hace mucho) • Curva de aprendizaje baja (Simple) • Aprovecha al máximo las últimas características de PHP • Integrado con Composer • Integrado con Git
  • 4.
    Comenzando con Laravel •Instalación Se puede instalar con composer y laravel installer composer global require "laravel/installer=~1.1" laravel new blog Se puede instalar directamente usando composer composer create-project laravel/laravel --prefer-dist • Configuración Básica • En config/app.php tenemos toda la configuración básica de la app • Para realizar configuraciones locales utilizamos el archivo .env
  • 5.
    Componentes Básicos • Rutas •Controladores • Vistas • Modelo • ORM (Eloquent) • Query Builder (Fluent) • Migraciones • Seeders • Artisan (CLI)
  • 6.
    Rutas • Utilizamos elarchivo app/Http/routes.php • Definimos todas las rutas que va a tener nuestra aplicación • Podemos elegir el verbo con el cual va a responder la ruta. • En proyectos simples, podemos usar Closures para implementar las respuestas de las rutas.
  • 7.
    Definiciones Básicas // Unsolo verbo Route::get('/', function () { return 'Hello World'; }); Route::post('foo/bar', function () { return 'Hello World'; }); Route::put('foo/bar', function () { // }); Route::delete('foo/bar', function () { // }); // Con varios verbos Route::match(['get', 'post'], '/', function () { return 'Hello World'; }); // Con parámetros requeridos Route::get('user/{id}', function ($id) { return 'User '.$id; }); Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) { // });
  • 8.
    Controladores • En vezde definir la lógica de cada ruta en routes.php, se pueden utilizar clases que extiendan de la clase Controller. • Los controladores pueden agrupar las solicitudes HTTP relacionadas y manejarlas dentro de la clase.
  • 9.
  • 10.
    Controladores para RESTFul Route::resource('photo','PhotoController'); Verb Path Action Route Name GET /photo index photo.index GET /photo/create create photo.create POST /photo store photo.store GET /photo/{photo} show photo.show GET /photo/{photo}/edit edit photo.edit PUT/PATCH /photo/{photo} update photo.update DELETE /photo/{photo} destroy photo.destroy
  • 11.
  • 12.
    Vistas Laravel incluye unsistema de plantillas llamado Blade. Este sistema permite: • Realizar herencia de plantillas. • Incluir secciones. • Sobrescribir secciones. • Escribir estructuras de PHP de forma resumida aunque nos permite escribir instrucciones de PHP normales
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    ORM Eloquent • ElORM, llamado Eloquent, incluido en Laravel provee una implementación elegante y sencilla de ActiveRecord (registro activo) para trabajar con la base de datos. • Cada entidad de la base de datos tiene un "Modelo" asociado, el cual se utiliza para interactuar con esa tabla. $count = AppFlight::where('active', 1)->count(); $max = AppFlight::where('active', 1)->max('price'); //Recupera por id $flight = AppFlight::find(1); // Recupera el primer registro que coincide con el filtro $flight = AppFlight::where('active', 1)->first(); //Guarda un nuevo Registro $flight = new Flight; $flight->name = $request->name; $flight->save();
  • 18.
    Query Builder -Fluent • Laravel nos provee un Database Query Builder, el cual nos permite crear y ejecutar consultas en la base de datos. Esto puede ser usado para ejecutar la mayoría de las operaciones habituales y trabaja con los sistemas de base de datos soportados por Laravel • A diferencia de el ORM, utiliza StdClass para representar los objetos. $users = DB::table('users')->get(); $user = DB::table('users')->where('name', 'John')->first(); $email = DB::table('users')->where('name', 'John')->value('email');
  • 19.
    Migraciones • Las migracionesson como un control de versiones para nuestra base de datos. • Nos permite fácilmente modificar y compartir el esquema de la base de datos de nuestro proyecto, especialmente útil para trabajar en equipos.
  • 20.
    Seeders • Laravel incluyeun método simple para llenar nuestra base de datos con datos de prueba usando clases Seed. • Las clases Seed pueden tener el nombre que querramos, pero por convención nos conviene utilizar la forma UserTableSeeder. • Por defecto, el proyecto cuenta con la clase DatabaseSeeder, donde podemos hacer llamadas a las diferentes clases Seeder que vamos creando.
  • 21.
    Artisan (CLI) • Esuna Command Line Interface extensible que permite realizar fácilmente operaciones habituales en el Framework, como la creación de Controllers, Modelos o ejecutar migraciones y seeding. • Podemos armar nuestros propios comandos, extendiendo la clase Command.
  • 22.
    Herramientas • Laravel.com • Laracasts.com •Styde.net • Laraveles.com • Laravel-news.com
  • 23.