SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
Desarrollo Rápido de Apps Web con Laravel 
/ jorlive 
@jlinformatico 
#DevHangout 
Laravel for Dummies
Mi Perfil 
Jorge Antonio Linares Vera 
Desarrolador Backend 
Laravel & Ruby On Rails en Noveltie 
● Desarrollador de la 
plataforma www.linvermet.com 
● CEO redaventura.com (startup) 
● Director de I+D Comunidad Tacna Valley 
● Fundador de la Comunidad de Software 
Libre BasadrinuX - Tacna
Motivación 
●Desarrollar con buenas prácticas en PHP y 
con el patrón MVC. 
● Agilizar el desarrollo de proyectos web con el 
framework laravel 4.
Agenda 
●Qué es Laravel? 
● Fundamentos Laravel 
●Mi primer ciclo MVC 
●Desarrollando mi App Laravel
PHP App Development
¿Qué es Laravel? 
Nuevo Resurgir de PHP 
@jlinformatico
Introducción 
● Laravel, es el framework PHP de código abierto de mayor 
aceptación actualmente para construir aplicaciones web 
de forma expresiva y elegante por su simplicidad en la 
sintaxis, su elegancia en la escritura, su motor de plantillas 
incorporado, la potencia de composer y de artisan para su 
manejo y los complementos con los que cuenta.
Filosofía 
● La programación no tiene que ser aburrida y repetitiva. 
● Busca reducir sintaxis de código. 
● Se puede disfrutar lo que se hace sin eliminar 
funcionalidades en nuestras aplicaciones o sacrificar 
otras cosas. 
● Enfocado enormemente a reutilizar conocimiento.
Filosofía 
● Tomar lo mejor de otros Frameworks como Ruby on 
Rails, Sinatra, ASP .NET MVC y por supuesto Symfony. 
● Adecuado para aplicaciones de cualquier tamaño. 
● Enfocada en patrones de desarrollo para influenciar 
buenas prácticas.
Por qué Laravel? 
●Una Comunidad activa que va creciendo. 
●Desarrollo activo que garantiza corrección de 
problemas de seguridad, mejoras, etc. 
●Buena Documentación y bien explicado.
Características 
● Va por la versión 4 publicada en Mayo del 2013 
(actualmente en la versión 4.2). 
● Creado en 2011 por Taylor Otwell - 
https://twitter.com/taylorotwell 
● Publicado bajo la licencia open source MIT - 
http://opensource.org/licenses/MIT 
● Está inspirado en Ruby on Rails y Symfony, de quien 
posee muchas dependencias. 
● Está diseñado para desarrollar bajo el patrón MVC. 
● Autentificación fácil de implementar. 
● Muchos components de Symfony
Artisan 
Cliente de consola que nos permite ejecutar comandos 
propios del framework. 
● Comandos básicos para artisan: 
http://cheats.jesse-obrien.ca/
Composer 
Composer el nuevo gestor de paquetes y de dependencias 
de PHP. Esto quiere decir que Composer va a descargar de 
sus repositorios todas las librerías y las dependencias con 
las versiones requeridas que el proyecto necesite y 
manejarlas en un solo lugar de manera ordenada. 
Obtenerlo desde: 
https://getcomposer.org/
Eloquent ORM (Object-Relational Mapping) 
● Posee un sistema de mapeo de datos relacional llamado 
Eloquent ORM, que nos permite interactuar con nuestra 
base de datos como si cada tabla fuera un Modelo, 
respetando más fielmente la división MVC.
Sistema de Plantillas Blade 
● Utiliza un sistema de procesamiento de plantillas 
llamado Blade, el cual hace uso de la cache para darle 
mayor velocidad.
Fuentes 
Libros: 
● Laravel: Code Bright - https://leanpub.com/codebright 
● Getting Started with Laravel 4 
● Laravel: From Apprentice To Artisan - 
https://leanpub.com/laravel 
● Laravel Testing Decoded - 
https://leanpub.com/laravel-testing-decoded 
Web: 
● Documentación Oficial: http://laravel.com/docs
Lo que necesitas saber 
Para comenzar a emprender un proyecto web, 
requieres de conceptos básicos: 
● Por qué trabajar con Frameworks 
● Buenas prácticas de desarrollo 
●Desarrollar con Patrón MVC 
● PHP 5 y POO 
● GIT / github 
● Servidores Web 
● Comandos básicos en Gnu/Linux 
●Otros Lenguajes y Frameworks.
Framework 
● Framework es un marco de trabajo (un esqueleto, un 
patrón) para el desarrollo y/o la implementación de 
una aplicación.
Microframeworks 
● Phalcon, Silex, BulletPHP, Slim, Limonade, Fat-Free 
framework, Wave Framework, Recess PHP, Tonic.
CMS en Laravel 
Estable: 
● Laravel Bootstrap 
https://github.com/davzie/laravel-bootstrap 
● TypiCMS: https://github.com/sdebacker/TypiCMS 
● Bootstrap starter site 
https://github.com/andrewelkins/Laravel-4-Bootstrap-S 
tarter-Site 
● Pongo CMS v1 (Laravel 3) http://pongocms.com 
● Wardrobe CMS (blogging) 
https://github.com/wardrobecms/wardrobe 
● CodeSleeve https://github.com/CodeSleeve/platform
CMS en Laravel 
En Desarrollo: 
● PongoCMS v2 http://pongocms.com 
● October CMS http://octobercms.com/ 
● Larapress: https://github.com/larapress-cms/larapress 
● Coanda: https://github.com/CoandaCMS/coanda-core 
● PyroCMS v3 https://www.pyrocms.com/ 
● Platform (Release Candidate) 
https://cartalyst.com/manual/platform
Patrón arquitectónico MVC 
● Framework es un marco de trabajo (un esqueleto, un 
patrón) para el desarrollo y/o la implementación de 
una aplicación.
Programación Orientada a Objetos 
● La POO es un paradigma de programación (o técnica 
de programación) que utiliza objetos e interacciones 
en el diseño de un sistema.
Sistema de Control de Versiones 
● Llevar la gestión de los diversos cambios que se 
realizan sobre el código de un proyecto de desarrollo 
de software. 
● Quieres profundizar en Git: http://git-scm.com/doc 
● Quieres practicar: https://try.github.io/
Lo que debes hacer 
● Plantéate un proyecto personal, forma un 
equipo y ten mucha proactividad. 
● Es importante configurar tu entorno de 
desarrollo. 
● Es importante desarrollar de manera ágil 
● Escoger las tecnologías más cómodas y 
productivas acorde a tu forma de trabajo 
(editores de código, IDEs, programador de 
tareas, etc). 
● Es importante utilizar la terminal.
Elige una Distribución Gnu/Linux 
Que se adapte a tus necesidades: 
LinuxMint DE 
Elementary OS 
Trisquel 
Fedora 
Debian 
ArchLinux 
CentOS
Configura tu servidor web 
● Laravel necesita un servidor web. Ya sea 
cualquiera de los que usa la comunidad como 
Apache o Nginx. 
● Una opción puede ser XAMPP ya sea para 
Gnu/Linux (GLAMP) o Windows (WAMP), y 
MAMP para usuarios Mac.
Un Gestor de Base de Datos 
● Laravel viene por defecto SQLite 
● También trabajo con MySql (recomiendo 
utilizar MariaDB para temas académicos). 
● PostgreSQL 
●MongoDB 
● Redis
Instala PHP 5.3 o superior 
● Laravel requiere el lenguaje de programación 
PHP. Teniendo en cuenta que Laravel usa 
algunas características modernas del lenguaje, 
también necesitarás la versión 5.3.7 o superior. 
● Puedes saber que versión tienes escribiendo 
en la terminal php -v o usando el método 
phpinfo().
Instalar Composer 
●Desde la versión 4 de Laravel, la creación de 
un proyecto nuevo se maneja con Composer. 
● En una distribución basada en debian. 
$ sudo apt-get install curl 
● Ejecutar comando para instalar composer (considerar 
activar openssl en php.ini): 
curl -sS https://getcomposer.org/installer | php
Instalar Laravel 4 
Desde nuestra terminal accedemos al 
directorio de nuestro servidor web (ej: cd 
/var/www/proyectoslaravel) y ejecutamos la 
linea de comando: 
$ composer create-project laravel/laravel 
devacademy-laravel –prefer-dist 
Vamos a instalar sus dependencias: 
$ composer install --dev
Instalar Laravel 4 
Debes darle permisos de escritura a la carpeta 
/app/storage: 
$ sudo chmod -R 777 app/storage 
Debemos correr nuestro servidor web o del navegador: 
localhost/proyectoslaravel/devacademy-laravel/public 
óp 
hp artisan serve 
localhost:8000
Configurando el entorno local 
● Asegúrate de instalar las dependencias. 
● Vamos a generar nuestra clave secreta de la 
aplicación para darle seguridad a nuestra app y 
al sistema de autentificación de laravel. 
php artisan key:generate 
● Esta clave se encuentra en app/config/app.php
Fundamentos Laravel 
Mis primeros pasos 
@jlinformatico
Estructura del proyecto 
http://blog.devacademy.la/post/95503250161/tutorial-laravel-conociendo-la-estructura-de-un. 
● app 
commands 
config 
controllers 
database 
lang 
models 
start 
storage 
test 
views 
filters.php 
routes.php 
● bootstrap 
● public 
● vendor 
● composer.json
Modelos 
Persistencia, Migraciones y Relaciones 
@jlinformatico
Configurar la base de datos 
● app/config/database.php 
● Viene por defecto SQLite 
● Soporte para MariaDB, PostgreSQL,MongoDB
Migraciones 
Son un número de scripts PHP que son usados para cambiar 
la estructura y/o contenido de tu base de datos. 
$ php artisan migrate:make create_users 
app/database/migrations 
Contamos con 2 métodos 
up() y down() 
$ php artisan migrate:install
Seeds 
● Poblar la base de datos. 
●Creamos un archivo en el directorio 
app/database/seeds 
●Creamos el archivo UserTableSeeder.php 
● Insertamos código 
●Configuramos DatabaseSeeder.php 
● Ejecutamos el script de artisan: 
php artisan db:seed 
●
Eloquent ORM 
● Todos los modelos de nuestra app extenderán 
de la clase padre Eloquent. 
● Especifican a que tabla real de la base de 
datos afectarán. 
● Las relaciones entre objetos creadas, estarán 
presentes en dichos modelos.
Creación de Modelos 
● app/models 
● Todos los modelos deben extender la clase 
Eloquent. 
● Usuario.php 
<?php 
class Usuario extends Eloquent { 
protected $table = 'usuarios'; 
}
Pensando en CRUD 
●Create - Crear una nueva fila 
●Read - Leer filas existentes 
●Update - Actualizar filas existentes 
●Delete - Borrar filas existentes
Relaciones Eloquent 
Relaciones entre modelos: 
●One to one - belongsTo 
●One to Many - hasmany 
● Many to Many (tabla pivote) - belongsToMany
Controladores 
Rutas, Métodos y Parámetros 
@jlinformatico
Controllers 
● app/controllers 
● http://laravel.com/docs/4.2/controllers 
class UserController extends BaseController { 
public function showProfile($id) 
{ 
$user = User::find($id); 
return View::make('user.profile', array('user' 
=> $user)); 
} 
}
Manejo de Rutas 
● app/routes.php 
● http://laravel.com/docs/4.2/routing
RESTful Routing 
● php artisan controller:make BookController
Vistas 
Blade, formularios y layouts 
@jlinformatico
View 
● http://laravel.com/docs/4.2/responses#views 
● app/views/hola.php 
<html> 
<body> 
<h1>Hello, <?php echo $name; ?></h1> 
</body> 
</html> 
● Route::get('/', function() 
{ 
return View::make('hola', array('name' => 'Taylor')); 
});
Formularios 
{{ Form::open(array('url' => 'foo/bar')) }} 
// 
{{ Form::close() }}
CSS y Javascript con Bootstrap 
{{HTML::style('css/bootstrap.min.css')}} 
{{HTML::script('js/bootstrap.min.js')}}"
Mi Primer Ciclo MVC 
Modelo-Vista-Controlador 
@jlinformatico
Estructura del proyecto 
● app 
● config 
database.php 
● database 
migrations 
seeds 
● models 
Vendedor.php 
Producto.php 
● controllers 
VendedorController.php 
ProductoController.php 
● views 
inicio.blade.php 
plantilla.blade.php 
vendedor 
producto 
● routes.php
Creamos la tabla vendedor 
● app/database/migrations/
Crea el modelo clase Vendedor 
● app/models/Vendedor.php
Implementar la función agregarVendedor
Crea el controlador VendedorController 
● app/controllers/VendedorController.php
Prepara el router 
● app/routes.php
Definimos la plantilla base 
● app/views/plantilla.blade.php
Crea la vista que liste a los vendedores 
● app/views/vendedor/list.blade.php
Gracias :) 
@jlinformatico

Más contenido relacionado

La actualidad más candente

Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...ijafrc
 
what is LINUX ? presentation.
what is LINUX ? presentation.what is LINUX ? presentation.
what is LINUX ? presentation.saad_khan1122
 
Linux fundamentals
Linux fundamentalsLinux fundamentals
Linux fundamentalsRaghu nath
 
The Linux Command Cheat Sheet
The Linux Command Cheat SheetThe Linux Command Cheat Sheet
The Linux Command Cheat SheetTola LENG
 
Sqlite
SqliteSqlite
SqliteKumar
 
Setting up a web server in Linux (Ubuntu)
Setting up a web server in Linux (Ubuntu)Setting up a web server in Linux (Ubuntu)
Setting up a web server in Linux (Ubuntu)Zakaria Hossain
 
Linux ppt
Linux pptLinux ppt
Linux pptlincy21
 
5 Names, bindings,Typechecking and Scopes
5 Names, bindings,Typechecking and Scopes5 Names, bindings,Typechecking and Scopes
5 Names, bindings,Typechecking and ScopesMunawar Ahmed
 
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...Zyxware Technologies
 
Linux security introduction
Linux security introduction Linux security introduction
Linux security introduction Mohamed Gad
 
Common linux ubuntu commands overview
Common linux  ubuntu commands overviewCommon linux  ubuntu commands overview
Common linux ubuntu commands overviewAmeer Sameer
 
Swing and AWT in java
Swing and AWT in javaSwing and AWT in java
Swing and AWT in javaAdil Mehmoood
 
NFS y Samba
NFS y SambaNFS y Samba
NFS y Sambakrush kr
 

La actualidad más candente (20)

Linux: LVM
Linux: LVMLinux: LVM
Linux: LVM
 
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
 
what is LINUX ? presentation.
what is LINUX ? presentation.what is LINUX ? presentation.
what is LINUX ? presentation.
 
Linux fundamentals
Linux fundamentalsLinux fundamentals
Linux fundamentals
 
The Linux Command Cheat Sheet
The Linux Command Cheat SheetThe Linux Command Cheat Sheet
The Linux Command Cheat Sheet
 
Sqlite
SqliteSqlite
Sqlite
 
Setting up a web server in Linux (Ubuntu)
Setting up a web server in Linux (Ubuntu)Setting up a web server in Linux (Ubuntu)
Setting up a web server in Linux (Ubuntu)
 
Linux ppt
Linux pptLinux ppt
Linux ppt
 
5 Names, bindings,Typechecking and Scopes
5 Names, bindings,Typechecking and Scopes5 Names, bindings,Typechecking and Scopes
5 Names, bindings,Typechecking and Scopes
 
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...
Introduction to Bash Scripting, Zyxware Technologies, CSI Students Convention...
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
 
Linux security introduction
Linux security introduction Linux security introduction
Linux security introduction
 
Linux
Linux Linux
Linux
 
UNIX/Linux training
UNIX/Linux trainingUNIX/Linux training
UNIX/Linux training
 
Ubuntu – Linux Useful Commands
Ubuntu – Linux Useful CommandsUbuntu – Linux Useful Commands
Ubuntu – Linux Useful Commands
 
Common linux ubuntu commands overview
Common linux  ubuntu commands overviewCommon linux  ubuntu commands overview
Common linux ubuntu commands overview
 
Swing and AWT in java
Swing and AWT in javaSwing and AWT in java
Swing and AWT in java
 
Linux basics
Linux basicsLinux basics
Linux basics
 
Kali linux
Kali linuxKali linux
Kali linux
 
NFS y Samba
NFS y SambaNFS y Samba
NFS y Samba
 

Destacado

Conociendo a Laravel, el Framework de PHP para artesanos de la web
Conociendo a Laravel, el Framework de PHP para artesanos de la webConociendo a Laravel, el Framework de PHP para artesanos de la web
Conociendo a Laravel, el Framework de PHP para artesanos de la webSoftware Guru
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebFacundo E. Goñi Perez
 
01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )Jairo Hoyos
 
Django avanzado: Dia 2
Django avanzado: Dia 2Django avanzado: Dia 2
Django avanzado: Dia 2Esau Rodriguez
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 
Presentacion diseño web con jquery
Presentacion diseño web con jqueryPresentacion diseño web con jquery
Presentacion diseño web con jqueryMejorandola
 
La magia de jquery
La magia de jqueryLa magia de jquery
La magia de jqueryAngelDX
 
jQuery 1.3 UI eghost Julio2009
jQuery 1.3 UI eghost Julio2009jQuery 1.3 UI eghost Julio2009
jQuery 1.3 UI eghost Julio2009Irontec
 

Destacado (20)

Conociendo a Laravel, el Framework de PHP para artesanos de la web
Conociendo a Laravel, el Framework de PHP para artesanos de la webConociendo a Laravel, el Framework de PHP para artesanos de la web
Conociendo a Laravel, el Framework de PHP para artesanos de la web
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
 
9.laravel
9.laravel9.laravel
9.laravel
 
01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )
 
Taller de laravel
Taller de laravelTaller de laravel
Taller de laravel
 
Charla REST API
Charla REST APICharla REST API
Charla REST API
 
Ambientes
AmbientesAmbientes
Ambientes
 
Hacking The Human Interface
Hacking The Human InterfaceHacking The Human Interface
Hacking The Human Interface
 
Django Avanzado: Dia3
Django Avanzado: Dia3Django Avanzado: Dia3
Django Avanzado: Dia3
 
Django avanzado: Dia 2
Django avanzado: Dia 2Django avanzado: Dia 2
Django avanzado: Dia 2
 
Presentación appy/pod
Presentación appy/podPresentación appy/pod
Presentación appy/pod
 
Django avanzado: Dia1
Django avanzado: Dia1Django avanzado: Dia1
Django avanzado: Dia1
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 
Cmf 2016-2017
Cmf 2016-2017Cmf 2016-2017
Cmf 2016-2017
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
Presentacion diseño web con jquery
Presentacion diseño web con jqueryPresentacion diseño web con jquery
Presentacion diseño web con jquery
 
La magia de jquery
La magia de jqueryLa magia de jquery
La magia de jquery
 
Laravel 4.2 pdf
Laravel 4.2 pdfLaravel 4.2 pdf
Laravel 4.2 pdf
 
AJAX
AJAXAJAX
AJAX
 
jQuery 1.3 UI eghost Julio2009
jQuery 1.3 UI eghost Julio2009jQuery 1.3 UI eghost Julio2009
jQuery 1.3 UI eghost Julio2009
 

Similar a Laravel App Development in Under

Similar a Laravel App Development in Under (20)

Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
Laravel
LaravelLaravel
Laravel
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
Framework
FrameworkFramework
Framework
 
Trabajo especial (php)
Trabajo especial (php)Trabajo especial (php)
Trabajo especial (php)
 
Trabajo especial copy
Trabajo especial   copyTrabajo especial   copy
Trabajo especial copy
 
Ecosistema laravel
Ecosistema laravelEcosistema laravel
Ecosistema laravel
 
nn
nnnn
nn
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Instalación y Datos Básicos Sobre Dreamweaver
Instalación y Datos Básicos Sobre DreamweaverInstalación y Datos Básicos Sobre Dreamweaver
Instalación y Datos Básicos Sobre Dreamweaver
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
 
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
 
Webinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHPWebinar - Radiografía actual del lenguaje PHP
Webinar - Radiografía actual del lenguaje PHP
 
Ruby on the Rails
Ruby on the RailsRuby on the Rails
Ruby on the Rails
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
Manualcake
ManualcakeManualcake
Manualcake
 
Practica09
Practica09Practica09
Practica09
 

Laravel App Development in Under

  • 1. Desarrollo Rápido de Apps Web con Laravel / jorlive @jlinformatico #DevHangout Laravel for Dummies
  • 2. Mi Perfil Jorge Antonio Linares Vera Desarrolador Backend Laravel & Ruby On Rails en Noveltie ● Desarrollador de la plataforma www.linvermet.com ● CEO redaventura.com (startup) ● Director de I+D Comunidad Tacna Valley ● Fundador de la Comunidad de Software Libre BasadrinuX - Tacna
  • 3. Motivación ●Desarrollar con buenas prácticas en PHP y con el patrón MVC. ● Agilizar el desarrollo de proyectos web con el framework laravel 4.
  • 4. Agenda ●Qué es Laravel? ● Fundamentos Laravel ●Mi primer ciclo MVC ●Desarrollando mi App Laravel
  • 6.
  • 7. ¿Qué es Laravel? Nuevo Resurgir de PHP @jlinformatico
  • 8. Introducción ● Laravel, es el framework PHP de código abierto de mayor aceptación actualmente para construir aplicaciones web de forma expresiva y elegante por su simplicidad en la sintaxis, su elegancia en la escritura, su motor de plantillas incorporado, la potencia de composer y de artisan para su manejo y los complementos con los que cuenta.
  • 9. Filosofía ● La programación no tiene que ser aburrida y repetitiva. ● Busca reducir sintaxis de código. ● Se puede disfrutar lo que se hace sin eliminar funcionalidades en nuestras aplicaciones o sacrificar otras cosas. ● Enfocado enormemente a reutilizar conocimiento.
  • 10. Filosofía ● Tomar lo mejor de otros Frameworks como Ruby on Rails, Sinatra, ASP .NET MVC y por supuesto Symfony. ● Adecuado para aplicaciones de cualquier tamaño. ● Enfocada en patrones de desarrollo para influenciar buenas prácticas.
  • 11. Por qué Laravel? ●Una Comunidad activa que va creciendo. ●Desarrollo activo que garantiza corrección de problemas de seguridad, mejoras, etc. ●Buena Documentación y bien explicado.
  • 12. Características ● Va por la versión 4 publicada en Mayo del 2013 (actualmente en la versión 4.2). ● Creado en 2011 por Taylor Otwell - https://twitter.com/taylorotwell ● Publicado bajo la licencia open source MIT - http://opensource.org/licenses/MIT ● Está inspirado en Ruby on Rails y Symfony, de quien posee muchas dependencias. ● Está diseñado para desarrollar bajo el patrón MVC. ● Autentificación fácil de implementar. ● Muchos components de Symfony
  • 13. Artisan Cliente de consola que nos permite ejecutar comandos propios del framework. ● Comandos básicos para artisan: http://cheats.jesse-obrien.ca/
  • 14. Composer Composer el nuevo gestor de paquetes y de dependencias de PHP. Esto quiere decir que Composer va a descargar de sus repositorios todas las librerías y las dependencias con las versiones requeridas que el proyecto necesite y manejarlas en un solo lugar de manera ordenada. Obtenerlo desde: https://getcomposer.org/
  • 15. Eloquent ORM (Object-Relational Mapping) ● Posee un sistema de mapeo de datos relacional llamado Eloquent ORM, que nos permite interactuar con nuestra base de datos como si cada tabla fuera un Modelo, respetando más fielmente la división MVC.
  • 16. Sistema de Plantillas Blade ● Utiliza un sistema de procesamiento de plantillas llamado Blade, el cual hace uso de la cache para darle mayor velocidad.
  • 17. Fuentes Libros: ● Laravel: Code Bright - https://leanpub.com/codebright ● Getting Started with Laravel 4 ● Laravel: From Apprentice To Artisan - https://leanpub.com/laravel ● Laravel Testing Decoded - https://leanpub.com/laravel-testing-decoded Web: ● Documentación Oficial: http://laravel.com/docs
  • 18. Lo que necesitas saber Para comenzar a emprender un proyecto web, requieres de conceptos básicos: ● Por qué trabajar con Frameworks ● Buenas prácticas de desarrollo ●Desarrollar con Patrón MVC ● PHP 5 y POO ● GIT / github ● Servidores Web ● Comandos básicos en Gnu/Linux ●Otros Lenguajes y Frameworks.
  • 19. Framework ● Framework es un marco de trabajo (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación.
  • 20. Microframeworks ● Phalcon, Silex, BulletPHP, Slim, Limonade, Fat-Free framework, Wave Framework, Recess PHP, Tonic.
  • 21. CMS en Laravel Estable: ● Laravel Bootstrap https://github.com/davzie/laravel-bootstrap ● TypiCMS: https://github.com/sdebacker/TypiCMS ● Bootstrap starter site https://github.com/andrewelkins/Laravel-4-Bootstrap-S tarter-Site ● Pongo CMS v1 (Laravel 3) http://pongocms.com ● Wardrobe CMS (blogging) https://github.com/wardrobecms/wardrobe ● CodeSleeve https://github.com/CodeSleeve/platform
  • 22. CMS en Laravel En Desarrollo: ● PongoCMS v2 http://pongocms.com ● October CMS http://octobercms.com/ ● Larapress: https://github.com/larapress-cms/larapress ● Coanda: https://github.com/CoandaCMS/coanda-core ● PyroCMS v3 https://www.pyrocms.com/ ● Platform (Release Candidate) https://cartalyst.com/manual/platform
  • 23. Patrón arquitectónico MVC ● Framework es un marco de trabajo (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación.
  • 24. Programación Orientada a Objetos ● La POO es un paradigma de programación (o técnica de programación) que utiliza objetos e interacciones en el diseño de un sistema.
  • 25. Sistema de Control de Versiones ● Llevar la gestión de los diversos cambios que se realizan sobre el código de un proyecto de desarrollo de software. ● Quieres profundizar en Git: http://git-scm.com/doc ● Quieres practicar: https://try.github.io/
  • 26. Lo que debes hacer ● Plantéate un proyecto personal, forma un equipo y ten mucha proactividad. ● Es importante configurar tu entorno de desarrollo. ● Es importante desarrollar de manera ágil ● Escoger las tecnologías más cómodas y productivas acorde a tu forma de trabajo (editores de código, IDEs, programador de tareas, etc). ● Es importante utilizar la terminal.
  • 27. Elige una Distribución Gnu/Linux Que se adapte a tus necesidades: LinuxMint DE Elementary OS Trisquel Fedora Debian ArchLinux CentOS
  • 28. Configura tu servidor web ● Laravel necesita un servidor web. Ya sea cualquiera de los que usa la comunidad como Apache o Nginx. ● Una opción puede ser XAMPP ya sea para Gnu/Linux (GLAMP) o Windows (WAMP), y MAMP para usuarios Mac.
  • 29. Un Gestor de Base de Datos ● Laravel viene por defecto SQLite ● También trabajo con MySql (recomiendo utilizar MariaDB para temas académicos). ● PostgreSQL ●MongoDB ● Redis
  • 30. Instala PHP 5.3 o superior ● Laravel requiere el lenguaje de programación PHP. Teniendo en cuenta que Laravel usa algunas características modernas del lenguaje, también necesitarás la versión 5.3.7 o superior. ● Puedes saber que versión tienes escribiendo en la terminal php -v o usando el método phpinfo().
  • 31. Instalar Composer ●Desde la versión 4 de Laravel, la creación de un proyecto nuevo se maneja con Composer. ● En una distribución basada en debian. $ sudo apt-get install curl ● Ejecutar comando para instalar composer (considerar activar openssl en php.ini): curl -sS https://getcomposer.org/installer | php
  • 32. Instalar Laravel 4 Desde nuestra terminal accedemos al directorio de nuestro servidor web (ej: cd /var/www/proyectoslaravel) y ejecutamos la linea de comando: $ composer create-project laravel/laravel devacademy-laravel –prefer-dist Vamos a instalar sus dependencias: $ composer install --dev
  • 33. Instalar Laravel 4 Debes darle permisos de escritura a la carpeta /app/storage: $ sudo chmod -R 777 app/storage Debemos correr nuestro servidor web o del navegador: localhost/proyectoslaravel/devacademy-laravel/public óp hp artisan serve localhost:8000
  • 34. Configurando el entorno local ● Asegúrate de instalar las dependencias. ● Vamos a generar nuestra clave secreta de la aplicación para darle seguridad a nuestra app y al sistema de autentificación de laravel. php artisan key:generate ● Esta clave se encuentra en app/config/app.php
  • 35. Fundamentos Laravel Mis primeros pasos @jlinformatico
  • 36. Estructura del proyecto http://blog.devacademy.la/post/95503250161/tutorial-laravel-conociendo-la-estructura-de-un. ● app commands config controllers database lang models start storage test views filters.php routes.php ● bootstrap ● public ● vendor ● composer.json
  • 37. Modelos Persistencia, Migraciones y Relaciones @jlinformatico
  • 38. Configurar la base de datos ● app/config/database.php ● Viene por defecto SQLite ● Soporte para MariaDB, PostgreSQL,MongoDB
  • 39. Migraciones Son un número de scripts PHP que son usados para cambiar la estructura y/o contenido de tu base de datos. $ php artisan migrate:make create_users app/database/migrations Contamos con 2 métodos up() y down() $ php artisan migrate:install
  • 40. Seeds ● Poblar la base de datos. ●Creamos un archivo en el directorio app/database/seeds ●Creamos el archivo UserTableSeeder.php ● Insertamos código ●Configuramos DatabaseSeeder.php ● Ejecutamos el script de artisan: php artisan db:seed ●
  • 41. Eloquent ORM ● Todos los modelos de nuestra app extenderán de la clase padre Eloquent. ● Especifican a que tabla real de la base de datos afectarán. ● Las relaciones entre objetos creadas, estarán presentes en dichos modelos.
  • 42. Creación de Modelos ● app/models ● Todos los modelos deben extender la clase Eloquent. ● Usuario.php <?php class Usuario extends Eloquent { protected $table = 'usuarios'; }
  • 43. Pensando en CRUD ●Create - Crear una nueva fila ●Read - Leer filas existentes ●Update - Actualizar filas existentes ●Delete - Borrar filas existentes
  • 44. Relaciones Eloquent Relaciones entre modelos: ●One to one - belongsTo ●One to Many - hasmany ● Many to Many (tabla pivote) - belongsToMany
  • 45. Controladores Rutas, Métodos y Parámetros @jlinformatico
  • 46. Controllers ● app/controllers ● http://laravel.com/docs/4.2/controllers class UserController extends BaseController { public function showProfile($id) { $user = User::find($id); return View::make('user.profile', array('user' => $user)); } }
  • 47. Manejo de Rutas ● app/routes.php ● http://laravel.com/docs/4.2/routing
  • 48. RESTful Routing ● php artisan controller:make BookController
  • 49. Vistas Blade, formularios y layouts @jlinformatico
  • 50. View ● http://laravel.com/docs/4.2/responses#views ● app/views/hola.php <html> <body> <h1>Hello, <?php echo $name; ?></h1> </body> </html> ● Route::get('/', function() { return View::make('hola', array('name' => 'Taylor')); });
  • 51. Formularios {{ Form::open(array('url' => 'foo/bar')) }} // {{ Form::close() }}
  • 52. CSS y Javascript con Bootstrap {{HTML::style('css/bootstrap.min.css')}} {{HTML::script('js/bootstrap.min.js')}}"
  • 53. Mi Primer Ciclo MVC Modelo-Vista-Controlador @jlinformatico
  • 54. Estructura del proyecto ● app ● config database.php ● database migrations seeds ● models Vendedor.php Producto.php ● controllers VendedorController.php ProductoController.php ● views inicio.blade.php plantilla.blade.php vendedor producto ● routes.php
  • 55. Creamos la tabla vendedor ● app/database/migrations/
  • 56. Crea el modelo clase Vendedor ● app/models/Vendedor.php
  • 57. Implementar la función agregarVendedor
  • 58. Crea el controlador VendedorController ● app/controllers/VendedorController.php
  • 59. Prepara el router ● app/routes.php
  • 60. Definimos la plantilla base ● app/views/plantilla.blade.php
  • 61. Crea la vista que liste a los vendedores ● app/views/vendedor/list.blade.php