SlideShare una empresa de Scribd logo
1 de 43
Meetups
@SergioCarracedoRoi Scroll CTO
Disfrutando del desarrollo web
desde 1998.
@rolando_caldas
https://rolandocaldas.com
Pleased to meet you, Laravel
Meetups
Software libre bajo licencia MIT, desarrollado por Taylor Otwell
Versión actual 5.2
Basado en Composer
Especificaciones PSR-2 y PSR-4
Utiliza muchos componentes externos, especialmente de Symfony
ORM: Eloquent
Blade como sistema de procesamiento de plantillas
Middlewares!
Laravel - The PHP Framework for Web Artisians
Meetups
PHP >= 5.5.9
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
ZIP PHP Extension
XML PHP Extension
Instalando Laravel y creando el primer proyecto
Meetups
Composer instalado y funcionado correctamente.
Instalamos Laravel globalmente:
composer global require "laravel/installer"
Comprobar que esté disponible la ruta a los bin de composer en nuestro PATH:
~/.composer/vendor/bin
Para crear un nuevo proyecto laravel:
laravel new phpvigo05
El instalador creará la carpeta phpvigo05 en la ruta dónde se ejecutó el comando.
Posteriormente, habrá que ajustar el DocumentRoot del VirtualHost para nuestro Apache
Instalando Laravel vía Composer
Meetups
Creando el proyecto phpvigo05
Meetups
¡¡Laravel ready!! Contenido de nuestro proyecto
Meetups
¡¡Laravel ready!! Contenido de nuestro proyecto
Meetups
app: Zona destinada a nuestro código de aplicación. En su interior se encontrarán nuestros
modelos, controladores, middlewares, etc.
artisan: Laravel CLI para crear los modelos, migrations, seeders, etc.
config: La configuración de la aplicación. Debe contener los valores de producción
database: La definición de tablas, relaciones, actualizaciones y alimentación inicial
.env: La configuración para tu entorno de desarrollo
public: El contenido web raíz. Sólo tiene favicon, htaccess, index, robots.txt y web.config
resources: Plantillas y cadenas de idioma
storage: Almacenamiento de archivos.
vendor: Las dependencias del proyecto (Laravel actúa como dependencia)
Editando el DocumentRoot en el VirtualHost del proyecto
Meetups
Listos para comprobar el resultado
Meetups
GO GO GO!!
Meetups
Listos para comprobar el resultado
Meetups
Listos para comprobar el resultado
Keep Calm: Fix the permissions
Meetups
Laravel tiene que poder escribir en el directorio storage y en todo su contenido
chmod -R 777 storage
… listos para probar de nuevo!
Meetups
Listos para comprobar el resultado
Configurando conexión DB en entorno de desarrollo
Meetups
Tenemos un MySQL con una base de datos phpvigo05 y el usuario phpvigo con contraseña
4GFd5l$dkae343aAFIeja32!kjdl
Debemos editar el fichero .env (el database.php de config tendrá los valores de producción)
Laravel y su ORM: Eloquent
Meetups
https://laravel.com/docs/5.2/eloquent
Abstracción total de la base de datos.
Tú defines la estructura de los modelos y sus relaciones: Eloquent crea las tablas por tí.
Permite relaciones 1:1 - 1:n - n:m
Permite el Soft Delete
Con artisan se genera la estructura base de la clase del modelo:
php artisan make:model Model --migration
Una vez definido el modelo y establecido su migration, lo aplicamos vía artisan:
php artisan migrate
Laravel y su ORM: Eloquent
Meetups
Se generan los ficheros:
app/Author.php - Modelo
database/migrations/2016_06_06_192257_create_authors_table.php - Schema
La clase creada CreateAuthorsTable tiene dos métodos: up y down
El método up se ejecuta al lanzar el migrate.
El método down se ejecuta al realizar un rollback.
Editamos CreateAuthorsTable para definir su estructura.
Laravel y su ORM: Eloquent
Meetups
authors como el Schema a crear.
id como como auto incremental y llave.
name como string de 50
surname como string de 255
photo como string 255
bio como text
birthdate como date
slug como string de 255 y llave única.
se incorpora automáticamente en formato timestamps la
fecha de creación y última modificación.
Se activan los softDeletes
Laravel y su ORM: Eloquent
Meetups
Al lanzar php artisan migrate se crean las tablas de users, password_resets y authors
Repetimos el make:model para crear un nuevo modelo llamado Book creado los ficheros:
app/Book.php - Modelo
database/migrations/2016_06_06_192747_create_books_table.php - Schema
Editamos CreateBooksTable para definir su estructura.
Laravel y su ORM: Eloquent
Meetups
books como el Schema a crear.
id como como auto incremental y llave.
author_id como integer unsigned y nullable.
title como string de 255
poster como string 255
extract como text
slug como string de 255 y llave única.
se incorpora automáticamente en formato timestamps la fecha de creación
y última modificación.
Se activan los softDeletes.
Se establece una clave foránea que relaciona el campo author_id con el id de
la tabla de authors, indicando que el campo author_id pasará a ser nulo
cuando se elimine el autor relacionado.
Laravel y su ORM: Eloquent
Meetups
Laravel y su ORM: Eloquent
Meetups
Laravel y su ORM: Eloquent
Meetups
Laravel y su ORM: Eloquent
Meetups
Laravel y su ORM: Eloquent
Meetups
Los migrate lanzados vía artisan pueden deshacerse utilizando la opción de rollback.
Para saber qué debe deshacer, consulta la tabla migrations.
Realmente no hace un rollback, sino que ejecuta los métodos down correspondientes.
Laravel y su ORM: Eloquent
Meetups
Laravel y su ORM: Eloquent
Meetups
Para volver a tener la tabla de books hay que realizar un nuevo migration.
Laravel y su ORM: Eloquent
Meetups
Activando el sistema de usuarios o Auth
Meetups
Laravel viene preparado para proporcionar una funcionalidad básica de usuarios:
Registro de usuario
Login de usuario
Logout de usuario
Restricción de acceso a usuarios registrados.
Aunque venga preparado, es precioso indicar, explícitamente que lo active.
Meetups
Novedades en el routes: Nueva ruta home y “alias” auth
Meetups
Novedades en el routes: Nueva ruta home y “alias” auth
Las rutas en Laravel
Meetups
En app/Http/routes.php se definen las rutas que a app acepta y el código a ejecutarse.
Por cada route puede ejecutarse una función anónima o un método de un controlador.
Se puede definir un route como un patrón basado en expresiones regulares.
Se diferencia entre route de GET y route de POST pudiendo estar dos definiciones de ruta
capturando la misma URL, pero diferenciándose en si va por GET o POST.
Se pueden agrupar varias rutas dentro de un grupo de middlewares.
Las rutas en Laravel: Ejemplos
Meetups
El middleware web y auth
Meetups
Un middleware especialmente importante es el conocido como “web”.
No se trata de un middleware realmente, sino que es un grupo de middleware.
Entre otras cosas, activa el sistema de sesión, permitiendo así que los usuarios se puedan
loguear.
Es importante que todas las rutas que sean accesibles en modo web (hay otros modos como
api) estén dentro de un grupo de rutas que ejecute el middleware web o se perderán los
datos de sesión.
El middleware auth obliga a que el usuario esté logueado para poder acceder a las rutas que
utilizan este middleware.
El middleware web
Meetups
Crear tu propio middleware
Meetups
Pongamos, por ejemplo, que queremos limitar el acceso a unas determinadas rutas, para que
sólo sean accesibles al administrador.
Podemos comprobar este punto en cada método de nuestros controladores o dejar que un
middleware haga el filtro por nosotros.
Para crear un middleware, se lanza artisan:
php artisan make:middleware Admin
Se genera el fichero app/Http/Middleware/Admin.php
En esa clase, debemos incorporar en el método handle nuestra restricción.
Para determinar si el usuario es admin, simplemente miraremos que el user id sea 1
Crear tu propio middleware
Meetups
Crear tu propio middleware
Meetups
Para poder utilizarlo, debemos activarlo en
app/Kernel.php
Ya podemos usarlo en nuestro routes:
Blade: Procesamiento de plantillas
Meetups
https://laravel.com/docs/5.2/blade
Permite extender plantillas (layouts) existentes.
Permite utilizar plantillas dentro de otras (subviews)
Tiene un sistema de cacheo de plantillas.
Sintaxis de estructuras de control parecida a la alternativa de PHP.
Uso de {{ $foo }} para imprimir el contenido filtrado (htmlentities)
Uso de {{ !! $foo !! }} para imprimir el contenido sin filtrar
Inyección de services
NO trabaja en un contexto aislado/separado (como sí hace Twig)
Recursos y utilidades de interés
Meetups
https://laravel.com/docs/
https://laracasts.com/
https://github.com/barryvdh/laravel-debugbar
https://github.com/rcrowe/TwigBridge
https://github.com/rolando-caldas/laravel-phpvigo05
Finally Free??
Meetups
www.opsou.com www.pedrofigueras.comwww.casadellibro.com

Más contenido relacionado

La actualidad más candente

TEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSPTEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSP
Anyeni Garay
 
Servidor De Prueba (Wamp Y Php)Presentacion
Servidor De Prueba (Wamp Y Php)PresentacionServidor De Prueba (Wamp Y Php)Presentacion
Servidor De Prueba (Wamp Y Php)Presentacion
uts
 
Instalar php 5 en windows 7 con apache
Instalar php 5 en windows 7 con apacheInstalar php 5 en windows 7 con apache
Instalar php 5 en windows 7 con apache
Esmeralda Lopez
 
Red t3 practica1_apachecms
Red t3 practica1_apachecmsRed t3 practica1_apachecms
Red t3 practica1_apachecms
garciadebora
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
Faby Marcos Solis
 
Servidor de prueba wamp
Servidor de prueba wampServidor de prueba wamp
Servidor de prueba wamp
edinson
 
Instalación open bravo
Instalación open bravoInstalación open bravo
Instalación open bravo
Charlie Stark
 

La actualidad más candente (20)

TEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSPTEMA Nº 3: ELEMENTOS DE JSP
TEMA Nº 3: ELEMENTOS DE JSP
 
Servidor De Prueba (Wamp Y Php)Presentacion
Servidor De Prueba (Wamp Y Php)PresentacionServidor De Prueba (Wamp Y Php)Presentacion
Servidor De Prueba (Wamp Y Php)Presentacion
 
Javier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins PdfJavier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins Pdf
 
Programa en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier RamirezPrograma en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier Ramirez
 
Rails Plugins. Javier Ramirez
Rails Plugins. Javier RamirezRails Plugins. Javier Ramirez
Rails Plugins. Javier Ramirez
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
Ruby on the Rails
Ruby on the RailsRuby on the Rails
Ruby on the Rails
 
Instalar php 5 en windows 7 con apache
Instalar php 5 en windows 7 con apacheInstalar php 5 en windows 7 con apache
Instalar php 5 en windows 7 con apache
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Red t3 practica1_apachecms
Red t3 practica1_apachecmsRed t3 practica1_apachecms
Red t3 practica1_apachecms
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.
 
Tema1
Tema1Tema1
Tema1
 
Tema1
Tema1Tema1
Tema1
 
Servidor de prueba wamp
Servidor de prueba wampServidor de prueba wamp
Servidor de prueba wamp
 
Instalación open bravo
Instalación open bravoInstalación open bravo
Instalación open bravo
 

Destacado

Antonio votino intervento_08_03_2013
Antonio votino intervento_08_03_2013Antonio votino intervento_08_03_2013
Antonio votino intervento_08_03_2013
Network Lab
 
060812 EEOC Response (SLOVAK)
060812   EEOC Response (SLOVAK)060812   EEOC Response (SLOVAK)
060812 EEOC Response (SLOVAK)
VogelDenise
 
061012 Pink Slip (ICELANDIC)
061012   Pink Slip (ICELANDIC)061012   Pink Slip (ICELANDIC)
061012 Pink Slip (ICELANDIC)
VogelDenise
 
060812 EEOC Response (GUJARATI)
060812   EEOC Response (GUJARATI)060812   EEOC Response (GUJARATI)
060812 EEOC Response (GUJARATI)
VogelDenise
 
062112 chinese-simplified (supreme court)
062112   chinese-simplified (supreme court)062112   chinese-simplified (supreme court)
062112 chinese-simplified (supreme court)
VogelDenise
 
United States of America – IMMIGRATION REFORM - THAI
United States of America – IMMIGRATION REFORM - THAIUnited States of America – IMMIGRATION REFORM - THAI
United States of America – IMMIGRATION REFORM - THAI
VogelDenise
 
021013 adecco email (croatian)
021013   adecco email (croatian)021013   adecco email (croatian)
021013 adecco email (croatian)
VogelDenise
 
01/28/13 US Supreme Court Response (filipino)
01/28/13 US Supreme Court Response  (filipino)01/28/13 US Supreme Court Response  (filipino)
01/28/13 US Supreme Court Response (filipino)
VogelDenise
 
072712 usa ku klux klan runned government - irish
072712 usa ku klux klan runned government - irish072712 usa ku klux klan runned government - irish
072712 usa ku klux klan runned government - irish
VogelDenise
 

Destacado (20)

Antonio votino intervento_08_03_2013
Antonio votino intervento_08_03_2013Antonio votino intervento_08_03_2013
Antonio votino intervento_08_03_2013
 
060812 EEOC Response (SLOVAK)
060812   EEOC Response (SLOVAK)060812   EEOC Response (SLOVAK)
060812 EEOC Response (SLOVAK)
 
061012 Pink Slip (ICELANDIC)
061012   Pink Slip (ICELANDIC)061012   Pink Slip (ICELANDIC)
061012 Pink Slip (ICELANDIC)
 
060812 EEOC Response (GUJARATI)
060812   EEOC Response (GUJARATI)060812   EEOC Response (GUJARATI)
060812 EEOC Response (GUJARATI)
 
062112 chinese-simplified (supreme court)
062112   chinese-simplified (supreme court)062112   chinese-simplified (supreme court)
062112 chinese-simplified (supreme court)
 
concrete5とコワーキング / コワーキング カンファレンス2013
concrete5とコワーキング / コワーキング カンファレンス2013concrete5とコワーキング / コワーキング カンファレンス2013
concrete5とコワーキング / コワーキング カンファレンス2013
 
Steve cohen wikipedia(highlighted)
Steve cohen   wikipedia(highlighted)Steve cohen   wikipedia(highlighted)
Steve cohen wikipedia(highlighted)
 
Fair in Barcelos, Portugal
Fair in Barcelos, PortugalFair in Barcelos, Portugal
Fair in Barcelos, Portugal
 
Ekonomi 1-mikro 2013
Ekonomi 1-mikro 2013Ekonomi 1-mikro 2013
Ekonomi 1-mikro 2013
 
Brad schneider wikipedia(highlighted)
Brad schneider   wikipedia(highlighted)Brad schneider   wikipedia(highlighted)
Brad schneider wikipedia(highlighted)
 
United States of America – IMMIGRATION REFORM - THAI
United States of America – IMMIGRATION REFORM - THAIUnited States of America – IMMIGRATION REFORM - THAI
United States of America – IMMIGRATION REFORM - THAI
 
Obama read my lips -obama fraudgate (latvian)
Obama   read my lips -obama fraudgate (latvian)Obama   read my lips -obama fraudgate (latvian)
Obama read my lips -obama fraudgate (latvian)
 
Obama read my lips -obama fraudgate (malay)
Obama   read my lips -obama fraudgate (malay)Obama   read my lips -obama fraudgate (malay)
Obama read my lips -obama fraudgate (malay)
 
021013 adecco email (croatian)
021013   adecco email (croatian)021013   adecco email (croatian)
021013 adecco email (croatian)
 
01/28/13 US Supreme Court Response (filipino)
01/28/13 US Supreme Court Response  (filipino)01/28/13 US Supreme Court Response  (filipino)
01/28/13 US Supreme Court Response (filipino)
 
History of Science
History of ScienceHistory of Science
History of Science
 
072712 usa ku klux klan runned government - irish
072712 usa ku klux klan runned government - irish072712 usa ku klux klan runned government - irish
072712 usa ku klux klan runned government - irish
 
Eliot engel wikipedia(highlighted)
Eliot engel   wikipedia(highlighted)Eliot engel   wikipedia(highlighted)
Eliot engel wikipedia(highlighted)
 
Stalactites: Millions of years or recently formed?
Stalactites: Millions of years or recently formed?Stalactites: Millions of years or recently formed?
Stalactites: Millions of years or recently formed?
 
011817-PROJECT EXTENDING AFRICA (Portuguese)
011817-PROJECT EXTENDING AFRICA (Portuguese)011817-PROJECT EXTENDING AFRICA (Portuguese)
011817-PROJECT EXTENDING AFRICA (Portuguese)
 

Similar a Pleased to meet you, Laravel

Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
METROPOLITANO
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
Ernesto Gamboa
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
Ignacio Reyes
 
633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)
Eduardo Monroy Husillos
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
Alberto Martinez
 

Similar a Pleased to meet you, Laravel (20)

Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Ecosistema laravel
Ecosistema laravelEcosistema laravel
Ecosistema laravel
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
nn
nnnn
nn
 
Laravel
LaravelLaravel
Laravel
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Pdf
PdfPdf
Pdf
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
 
Phpmyadmin
PhpmyadminPhpmyadmin
Phpmyadmin
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Tutorial mysqlphp
Tutorial mysqlphpTutorial mysqlphp
Tutorial mysqlphp
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo633f9e tutorial de php y my sql completo
633f9e tutorial de php y my sql completo
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)633f9e tutorial de php y my sql completo (1)
633f9e tutorial de php y my sql completo (1)
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 

Más de Rolando Caldas

Más de Rolando Caldas (6)

PHPVigo #28 principios solid en la vida real
PHPVigo #28   principios solid en la vida realPHPVigo #28   principios solid en la vida real
PHPVigo #28 principios solid en la vida real
 
PHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnitPHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnit
 
PHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHPPHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHP
 
PHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hashPHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hash
 
PHPVigo #16 - Lightning filter input
PHPVigo #16 - Lightning filter inputPHPVigo #16 - Lightning filter input
PHPVigo #16 - Lightning filter input
 
PHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoPHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entorno
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

Pleased to meet you, Laravel

  • 1.
  • 2. Meetups @SergioCarracedoRoi Scroll CTO Disfrutando del desarrollo web desde 1998. @rolando_caldas https://rolandocaldas.com
  • 3. Pleased to meet you, Laravel Meetups Software libre bajo licencia MIT, desarrollado por Taylor Otwell Versión actual 5.2 Basado en Composer Especificaciones PSR-2 y PSR-4 Utiliza muchos componentes externos, especialmente de Symfony ORM: Eloquent Blade como sistema de procesamiento de plantillas Middlewares!
  • 4. Laravel - The PHP Framework for Web Artisians Meetups PHP >= 5.5.9 OpenSSL PHP Extension PDO PHP Extension Mbstring PHP Extension Tokenizer PHP Extension ZIP PHP Extension XML PHP Extension
  • 5. Instalando Laravel y creando el primer proyecto Meetups Composer instalado y funcionado correctamente. Instalamos Laravel globalmente: composer global require "laravel/installer" Comprobar que esté disponible la ruta a los bin de composer en nuestro PATH: ~/.composer/vendor/bin Para crear un nuevo proyecto laravel: laravel new phpvigo05 El instalador creará la carpeta phpvigo05 en la ruta dónde se ejecutó el comando. Posteriormente, habrá que ajustar el DocumentRoot del VirtualHost para nuestro Apache
  • 6. Instalando Laravel vía Composer Meetups
  • 7. Creando el proyecto phpvigo05 Meetups
  • 8. ¡¡Laravel ready!! Contenido de nuestro proyecto Meetups
  • 9. ¡¡Laravel ready!! Contenido de nuestro proyecto Meetups app: Zona destinada a nuestro código de aplicación. En su interior se encontrarán nuestros modelos, controladores, middlewares, etc. artisan: Laravel CLI para crear los modelos, migrations, seeders, etc. config: La configuración de la aplicación. Debe contener los valores de producción database: La definición de tablas, relaciones, actualizaciones y alimentación inicial .env: La configuración para tu entorno de desarrollo public: El contenido web raíz. Sólo tiene favicon, htaccess, index, robots.txt y web.config resources: Plantillas y cadenas de idioma storage: Almacenamiento de archivos. vendor: Las dependencias del proyecto (Laravel actúa como dependencia)
  • 10. Editando el DocumentRoot en el VirtualHost del proyecto Meetups
  • 11. Listos para comprobar el resultado Meetups GO GO GO!!
  • 14. Keep Calm: Fix the permissions Meetups Laravel tiene que poder escribir en el directorio storage y en todo su contenido chmod -R 777 storage … listos para probar de nuevo!
  • 16. Configurando conexión DB en entorno de desarrollo Meetups Tenemos un MySQL con una base de datos phpvigo05 y el usuario phpvigo con contraseña 4GFd5l$dkae343aAFIeja32!kjdl Debemos editar el fichero .env (el database.php de config tendrá los valores de producción)
  • 17. Laravel y su ORM: Eloquent Meetups https://laravel.com/docs/5.2/eloquent Abstracción total de la base de datos. Tú defines la estructura de los modelos y sus relaciones: Eloquent crea las tablas por tí. Permite relaciones 1:1 - 1:n - n:m Permite el Soft Delete Con artisan se genera la estructura base de la clase del modelo: php artisan make:model Model --migration Una vez definido el modelo y establecido su migration, lo aplicamos vía artisan: php artisan migrate
  • 18. Laravel y su ORM: Eloquent Meetups Se generan los ficheros: app/Author.php - Modelo database/migrations/2016_06_06_192257_create_authors_table.php - Schema La clase creada CreateAuthorsTable tiene dos métodos: up y down El método up se ejecuta al lanzar el migrate. El método down se ejecuta al realizar un rollback. Editamos CreateAuthorsTable para definir su estructura.
  • 19. Laravel y su ORM: Eloquent Meetups authors como el Schema a crear. id como como auto incremental y llave. name como string de 50 surname como string de 255 photo como string 255 bio como text birthdate como date slug como string de 255 y llave única. se incorpora automáticamente en formato timestamps la fecha de creación y última modificación. Se activan los softDeletes
  • 20. Laravel y su ORM: Eloquent Meetups Al lanzar php artisan migrate se crean las tablas de users, password_resets y authors Repetimos el make:model para crear un nuevo modelo llamado Book creado los ficheros: app/Book.php - Modelo database/migrations/2016_06_06_192747_create_books_table.php - Schema Editamos CreateBooksTable para definir su estructura.
  • 21. Laravel y su ORM: Eloquent Meetups books como el Schema a crear. id como como auto incremental y llave. author_id como integer unsigned y nullable. title como string de 255 poster como string 255 extract como text slug como string de 255 y llave única. se incorpora automáticamente en formato timestamps la fecha de creación y última modificación. Se activan los softDeletes. Se establece una clave foránea que relaciona el campo author_id con el id de la tabla de authors, indicando que el campo author_id pasará a ser nulo cuando se elimine el autor relacionado.
  • 22. Laravel y su ORM: Eloquent Meetups
  • 23. Laravel y su ORM: Eloquent Meetups
  • 24. Laravel y su ORM: Eloquent Meetups
  • 25. Laravel y su ORM: Eloquent Meetups
  • 26. Laravel y su ORM: Eloquent Meetups Los migrate lanzados vía artisan pueden deshacerse utilizando la opción de rollback. Para saber qué debe deshacer, consulta la tabla migrations. Realmente no hace un rollback, sino que ejecuta los métodos down correspondientes.
  • 27. Laravel y su ORM: Eloquent Meetups
  • 28. Laravel y su ORM: Eloquent Meetups Para volver a tener la tabla de books hay que realizar un nuevo migration.
  • 29. Laravel y su ORM: Eloquent Meetups
  • 30. Activando el sistema de usuarios o Auth Meetups Laravel viene preparado para proporcionar una funcionalidad básica de usuarios: Registro de usuario Login de usuario Logout de usuario Restricción de acceso a usuarios registrados. Aunque venga preparado, es precioso indicar, explícitamente que lo active.
  • 31. Meetups Novedades en el routes: Nueva ruta home y “alias” auth
  • 32. Meetups Novedades en el routes: Nueva ruta home y “alias” auth
  • 33. Las rutas en Laravel Meetups En app/Http/routes.php se definen las rutas que a app acepta y el código a ejecutarse. Por cada route puede ejecutarse una función anónima o un método de un controlador. Se puede definir un route como un patrón basado en expresiones regulares. Se diferencia entre route de GET y route de POST pudiendo estar dos definiciones de ruta capturando la misma URL, pero diferenciándose en si va por GET o POST. Se pueden agrupar varias rutas dentro de un grupo de middlewares.
  • 34. Las rutas en Laravel: Ejemplos Meetups
  • 35. El middleware web y auth Meetups Un middleware especialmente importante es el conocido como “web”. No se trata de un middleware realmente, sino que es un grupo de middleware. Entre otras cosas, activa el sistema de sesión, permitiendo así que los usuarios se puedan loguear. Es importante que todas las rutas que sean accesibles en modo web (hay otros modos como api) estén dentro de un grupo de rutas que ejecute el middleware web o se perderán los datos de sesión. El middleware auth obliga a que el usuario esté logueado para poder acceder a las rutas que utilizan este middleware.
  • 37. Crear tu propio middleware Meetups Pongamos, por ejemplo, que queremos limitar el acceso a unas determinadas rutas, para que sólo sean accesibles al administrador. Podemos comprobar este punto en cada método de nuestros controladores o dejar que un middleware haga el filtro por nosotros. Para crear un middleware, se lanza artisan: php artisan make:middleware Admin Se genera el fichero app/Http/Middleware/Admin.php En esa clase, debemos incorporar en el método handle nuestra restricción. Para determinar si el usuario es admin, simplemente miraremos que el user id sea 1
  • 38. Crear tu propio middleware Meetups
  • 39. Crear tu propio middleware Meetups Para poder utilizarlo, debemos activarlo en app/Kernel.php Ya podemos usarlo en nuestro routes:
  • 40. Blade: Procesamiento de plantillas Meetups https://laravel.com/docs/5.2/blade Permite extender plantillas (layouts) existentes. Permite utilizar plantillas dentro de otras (subviews) Tiene un sistema de cacheo de plantillas. Sintaxis de estructuras de control parecida a la alternativa de PHP. Uso de {{ $foo }} para imprimir el contenido filtrado (htmlentities) Uso de {{ !! $foo !! }} para imprimir el contenido sin filtrar Inyección de services NO trabaja en un contexto aislado/separado (como sí hace Twig)
  • 41. Recursos y utilidades de interés Meetups https://laravel.com/docs/ https://laracasts.com/ https://github.com/barryvdh/laravel-debugbar https://github.com/rcrowe/TwigBridge https://github.com/rolando-caldas/laravel-phpvigo05