62
/ jorlive Desarrollo Rápido de Apps Web con Laravel @jlinformatico #DevHangout Laravel for Dummies

Desarrollo rápido de apps web con laravel - DevAcademy

Embed Size (px)

DESCRIPTION

Laravel, es el framework PHP de código abierto de mayor aceptación actualmente para este lenguaje, y 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, hacen que PHP que para muchos estaba empezando a quedarse en el olvido, vuelva a ser rescatado y sea ahora un lenguaje moderno, rápido, eficiente y profesional trabajado desde Laravel.

Citation preview

Page 1: Desarrollo rápido de apps web con laravel - DevAcademy

/ jorlive

Desarrollo Rápido de Apps Web con Laravel

@jlinformatico

#DevHangout

Laravel for Dummies

Page 2: Desarrollo rápido de apps web con laravel - DevAcademy

Mi Perfil

Jorge Antonio Linares Vera

Desarrolador BackendLaravel & 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

Page 3: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 4: Desarrollo rápido de apps web con laravel - DevAcademy

Agenda

● Qué es Laravel?● Fundamentos Laravel● Mi primer ciclo MVC● Desarrollando mi App Laravel

Page 5: Desarrollo rápido de apps web con laravel - DevAcademy

PHP App Development

Page 6: Desarrollo rápido de apps web con laravel - DevAcademy
Page 7: Desarrollo rápido de apps web con laravel - DevAcademy

¿Qué es Laravel?Nuevo Resurgir de PHP

@jlinformatico

Page 8: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 9: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 10: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 11: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 12: Desarrollo rápido de apps web con laravel - DevAcademy

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

Page 13: Desarrollo rápido de apps web con laravel - DevAcademy

Artisan

Cliente de consola que nos permite ejecutar comandos propios del framework.

● Comandos básicos para artisan:http://cheats.jesse-obrien.ca/

Page 14: Desarrollo rápido de apps web con laravel - DevAcademy

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/

Page 15: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 16: Desarrollo rápido de apps web con laravel - DevAcademy

Sistema de Plantillas Blade

● Utiliza un sistema de procesamiento de plantillas llamado Blade, el cual hace uso de la cache para darle mayor velocidad.

Page 17: Desarrollo rápido de apps web con laravel - DevAcademy

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-decodedWeb:

● Documentación Oficial: http://laravel.com/docs

Page 18: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 19: Desarrollo rápido de apps web con laravel - DevAcademy

Framework

● Framework es un marco de trabajo (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación.

Page 20: Desarrollo rápido de apps web con laravel - DevAcademy

Microframeworks

● Phalcon, Silex, BulletPHP, Slim, Limonade, Fat-Free framework, Wave Framework, Recess PHP, Tonic.

Page 21: Desarrollo rápido de apps web con laravel - DevAcademy

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-Starter-Site

● Pongo CMS v1 (Laravel 3) http://pongocms.com● Wardrobe CMS (blogging)

https://github.com/wardrobecms/wardrobe● CodeSleeve https://github.com/CodeSleeve/platform

Page 22: Desarrollo rápido de apps web con laravel - DevAcademy

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

Page 23: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 24: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 25: Desarrollo rápido de apps web con laravel - DevAcademy

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/

Page 26: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 27: Desarrollo rápido de apps web con laravel - DevAcademy

Elige una Distribución Gnu/Linux

Que se adapte a tus necesidades:LinuxMint DEElementary OSTrisquelFedoraDebianArchLinuxCentOS

Page 28: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 29: Desarrollo rápido de apps web con laravel - DevAcademy

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

Page 30: Desarrollo rápido de apps web con laravel - DevAcademy

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().

Page 31: Desarrollo rápido de apps web con laravel - DevAcademy

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

Page 32: Desarrollo rápido de apps web con laravel - DevAcademy

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

Page 33: Desarrollo rápido de apps web con laravel - DevAcademy

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óphp artisan servelocalhost:8000

Page 34: Desarrollo rápido de apps web con laravel - DevAcademy

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

Page 35: Desarrollo rápido de apps web con laravel - DevAcademy

Fundamentos LaravelMis primeros pasos

@jlinformatico

Page 36: Desarrollo rápido de apps web con laravel - DevAcademy

Estructura del proyectohttp://blog.devacademy.la/post/95503250161/tutorial-laravel-conociendo-la-estructura-de-un.

● appcommandsconfigcontrollersdatabaselangmodelsstartstoragetestviewsfilters.phproutes.php

● bootstrap● public● vendor● composer.json

Page 37: Desarrollo rápido de apps web con laravel - DevAcademy

ModelosPersistencia, Migraciones y Relaciones

@jlinformatico

Page 38: Desarrollo rápido de apps web con laravel - DevAcademy

Configurar la base de datos

● app/config/database.php● Viene por defecto SQLite● Soporte para MariaDB, PostgreSQL,MongoDB

Page 39: Desarrollo rápido de apps web con laravel - DevAcademy

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/migrationsContamos con 2 métodosup() y down()

$ php artisan migrate:install

Page 40: Desarrollo rápido de apps web con laravel - DevAcademy

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

Page 41: Desarrollo rápido de apps web con laravel - DevAcademy

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.

Page 42: Desarrollo rápido de apps web con laravel - DevAcademy

Creación de Modelos

● app/models● Todos los modelos deben extender la clase

Eloquent.● Usuario.php

<?phpclass Usuario extends Eloquent {

protected $table = 'usuarios';}

Page 43: Desarrollo rápido de apps web con laravel - DevAcademy

Pensando en CRUD

● Create - Crear una nueva fila● Read - Leer filas existentes● Update - Actualizar filas existentes● Delete - Borrar filas existentes

Page 44: Desarrollo rápido de apps web con laravel - DevAcademy

Relaciones Eloquent

Relaciones entre modelos:

● One to one - belongsTo● One to Many - hasmany● Many to Many (tabla pivote) - belongsToMany

Page 45: Desarrollo rápido de apps web con laravel - DevAcademy

ControladoresRutas, Métodos y Parámetros

@jlinformatico

Page 46: Desarrollo rápido de apps web con laravel - DevAcademy

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)); }}

Page 47: Desarrollo rápido de apps web con laravel - DevAcademy

Manejo de Rutas

● app/routes.php● http://laravel.com/docs/4.2/routing

Page 48: Desarrollo rápido de apps web con laravel - DevAcademy

RESTful Routing

● php artisan controller:make BookController

Page 49: Desarrollo rápido de apps web con laravel - DevAcademy

VistasBlade, formularios y layouts

@jlinformatico

Page 50: Desarrollo rápido de apps web con laravel - DevAcademy

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'));});

Page 51: Desarrollo rápido de apps web con laravel - DevAcademy

Formularios

{{ Form::open(array('url' => 'foo/bar')) }} //{{ Form::close() }}

Page 52: Desarrollo rápido de apps web con laravel - DevAcademy

CSS y Javascript con Bootstrap

{{HTML::style('css/bootstrap.min.css')}}

{{HTML::script('js/bootstrap.min.js')}}"

Page 53: Desarrollo rápido de apps web con laravel - DevAcademy

Mi Primer Ciclo MVCModelo-Vista-Controlador

@jlinformatico

Page 54: Desarrollo rápido de apps web con laravel - DevAcademy

Estructura del proyecto

● app● config

database.php● database

migrationsseeds

● modelsVendedor.phpProducto.php

● controllersVendedorController.phpProductoController.php

● viewsinicio.blade.phpplantilla.blade.phpvendedorproducto

● routes.php

Page 55: Desarrollo rápido de apps web con laravel - DevAcademy

Creamos la tabla vendedor

● app/database/migrations/

Page 56: Desarrollo rápido de apps web con laravel - DevAcademy

Crea el modelo clase Vendedor

● app/models/Vendedor.php

Page 57: Desarrollo rápido de apps web con laravel - DevAcademy

Implementar la función agregarVendedor

Page 58: Desarrollo rápido de apps web con laravel - DevAcademy

Crea el controlador VendedorController

● app/controllers/VendedorController.php

Page 59: Desarrollo rápido de apps web con laravel - DevAcademy

Prepara el router

● app/routes.php

Page 60: Desarrollo rápido de apps web con laravel - DevAcademy

Definimos la plantilla base

● app/views/plantilla.blade.php

Page 61: Desarrollo rápido de apps web con laravel - DevAcademy

Crea la vista que liste a los vendedores

● app/views/vendedor/list.blade.php

Page 62: Desarrollo rápido de apps web con laravel - DevAcademy

Gracias :)@jlinformatico