temario de laravel 5-1[

Upload: miguel-miramontez

Post on 08-Jul-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/19/2019 Temario de Laravel 5-1[

    1/114

    PHP y LaravelClase 1

    Objetos 101

    Guido Contreras Woda - @guiwoda

  • 8/19/2019 Temario de Laravel 5-1[

    2/114

    ¿Qué es PHP?

    ✘ Lenguaje de Scripting

    ✘ Tipos dinámicos

    ✘ Lenguaje interpretado

    ✘ Orientado a Objetos

    ✘ Creado para la web

    ✘ > 80% de la Internet

    ✘ Gran comunidad

    ✘ Código Abierto (Open Source )

  • 8/19/2019 Temario de Laravel 5-1[

    3/114

    Administrador de Dependencias

    Composer 

  • 8/19/2019 Temario de Laravel 5-1[

    4/114

    Composer 

    $ composer init

    $ composer require vendor /package:~X.Y 

    $ composer install

    $ composer update [vendor/package] 

  • 8/19/2019 Temario de Laravel 5-1[

    5/114

    Objetos

  • 8/19/2019 Temario de Laravel 5-1[

    6/114

    ““Un objeto es una máquina desoftware  que contiene datos yexpone operaciones”

    Bertrand Meyer 

  • 8/19/2019 Temario de Laravel 5-1[

    7/114

    Objetos (Objects )

    Operaciones: Mensajes

    ✘ Qué puede hacer

    ✘ Cómo lo hace

    ✘ Qué responderá

    Datos: Estado interno

    ✘ Qué necesita

    ✘ Con quién colabora

    ✘ En qué estado  está

  • 8/19/2019 Temario de Laravel 5-1[

    8/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    9/114

    Pruebas

  • 8/19/2019 Temario de Laravel 5-1[

    10/114

    Pruebas (Testing)

    ✘ Define la funcionalidad

    ✘ Garantiza que la implementación es correcta

    Evita futuros problemas

  • 8/19/2019 Temario de Laravel 5-1[

    11/114

    Pruebas (Testing)

    ✘Preparar (Arrange ): Construir el contexto de la prueba

    ✘ Actuar (Act ): Ejecutar la acción que queremos probar

    ✘ Verificar (Assert ): Evaluar que los resultados sean los  esperados

  • 8/19/2019 Temario de Laravel 5-1[

    12/114

    ¡hagamos código!pruebas! 

  • 8/19/2019 Temario de Laravel 5-1[

    13/114

    Patrones de diseño

  • 8/19/2019 Temario de Laravel 5-1[

    14/114

    Entidades

  • 8/19/2019 Temario de Laravel 5-1[

    15/114

    Entidades (Entities )

    ✘ Objeto con identidad única a través del tiempo

    ✘ Parte del modelo del problema (Modelo de Dominio )

    Mejor candidato a enriquecer

  • 8/19/2019 Temario de Laravel 5-1[

    16/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    17/114

    Objetos de Valor

  • 8/19/2019 Temario de Laravel 5-1[

    18/114

  • 8/19/2019 Temario de Laravel 5-1[

    19/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    20/114

    Resumen

  • 8/19/2019 Temario de Laravel 5-1[

    21/114

    Resumen

    Objetos

    ✘ Estado

    ✘ Mensajes

    ✘ Colaboración

    Herencia✘ Responsabilidad

    Entidades

    ✘ Identidad✘ Modelo del

    problema

    Objetos de Valor

    ✘ Id estado

    ✘ Inmutables

    Composer

    ✘ Dependencias✘ Autoloading

    Testing

    ✘ Definición

    ✘ Comprobación

    ✘ Mantenimiento

  • 8/19/2019 Temario de Laravel 5-1[

    22/114¡Hasta la próxima!

  • 8/19/2019 Temario de Laravel 5-1[

    23/114

    PHP y LaravelClase 2

    PHP en la web

    Guido Contreras Woda - @guiwoda

  • 8/19/2019 Temario de Laravel 5-1[

    24/114

  • 8/19/2019 Temario de Laravel 5-1[

    25/114

    Patrones de Arquitectura

    Modelo VistaControlador (MVC) 

  • 8/19/2019 Temario de Laravel 5-1[

    26/114

    Modelo Vista Controlador (MVC )

    Separación de responsabilidades

    ✘ Modelo: Lógica de negocio (Modelo de Dominio )

    ✘ Vista: Presentación visual

    ✘ Controlador: Coordina las acciones del usuario

  • 8/19/2019 Temario de Laravel 5-1[

    27/114

    Controlador

  • 8/19/2019 Temario de Laravel 5-1[

    28/114

    Controlador (Controller )

    ✘Se asocia a uno o más pedidos HTTP

    ✘ Traduce el pedido HTTP en un mensaje de dominio

    ✘ Arma la respuesta al pedido

  • 8/19/2019 Temario de Laravel 5-1[

    29/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    30/114

     Vista

  • 8/19/2019 Temario de Laravel 5-1[

    31/114

     Vista (View )

    ✘ Representación gráfica de la respuesta

    ✘ Separa nuestros objetos (PHP) de nuestro lenguaje de

    presentación (HTML)

    ✘ Poca o ninguna necesidad de lógica

  • 8/19/2019 Temario de Laravel 5-1[

    32/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    33/114

    Modelo

  • 8/19/2019 Temario de Laravel 5-1[

    34/114

    Modelo (Model )

    ✘ Representa el problema y la solución implementada

    ✘ Separa la lógica de negocio de la presentación

    ✘ Compone un Modelo de Dominio

    ✓ Ayuda a entender el problema

    ✓Utiliza el Idioma del dominio (la “ jerga ”)⇛ Mejora la comunicación devs - cliente

    ✓ Crece junto con el negocio

  • 8/19/2019 Temario de Laravel 5-1[

    35/114

    “Cualquiera puede escribir código queuna máquina entienda.Un buen programador escribe código

    que otro humano entenderá.

    Martin Fowler 

  • 8/19/2019 Temario de Laravel 5-1[

    36/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    37/114

    Colecciones

  • 8/19/2019 Temario de Laravel 5-1[

    38/114

    Colecciones (Collections )

    ✘ Objetos que representan una colección de otros

    Buscar entre la colección

    ✘ Agregar y quitar de la colección

    ✘ Filtrar la colección

    ✘ etc.

  • 8/19/2019 Temario de Laravel 5-1[

    39/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    40/114

    Resumen

  • 8/19/2019 Temario de Laravel 5-1[

    41/114

    Resumen

    Web

    ✘ Protocolo HTTP✘ HTML (CSS - JS)

    ✘ Cliente - Servidor

    MVC

    ✘ Patrón de Arq.

    ✘ Separación de

    Responsabilidad

    Controladores

    ✘ Reciben pedido✘ Delegan mensaje

    ✘ Arman la vista

    Vista

    ✘ Representa la

    gráfica

    ✘ Poca lógica

    Modelo

    ✘ Problema✘ Comunicación

    ✘ Idioma, jerga

    Colecciones

    ✘ Contiene objs.

    ✘ Mensajes más

    claros

  • 8/19/2019 Temario de Laravel 5-1[

    42/114

    ¡Hasta la próxima!

  • 8/19/2019 Temario de Laravel 5-1[

    43/114

    PHP y LaravelClase 3

    Buenas Prácticas

    Guido Contreras Woda - @guiwoda

  • 8/19/2019 Temario de Laravel 5-1[

    44/114

  • 8/19/2019 Temario de Laravel 5-1[

    45/114

    Capas (Layers )

    ✘ Separa los roles a nivel de arquitectura

    ✘ Define la interacción entre cada rol

    ✘ Ayuda a construir software más robusto

    ✘ Evita el código spaghetti 

  • 8/19/2019 Temario de Laravel 5-1[

    46/114

    Capas (Layers )

    Http

    Controllers Views

    Modelo de dominio

    Entities Services Value Objects

    Events Exceptions

    Infraestructura Datos

    Repositories (base de datos)Adapters (APIs)

    Consola

    CommandsAPI

    Controllers Transformers

  • 8/19/2019 Temario de Laravel 5-1[

    47/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    48/114

    Servicios

  • 8/19/2019 Temario de Laravel 5-1[

    49/114

    Servicios (Services )

    ✘ Coordinadores de dominio

    ✘ No tienen estado (stateless )

    ✘ Se comunica con infraestructura

    ✘ Responde pedidos de capas superiores

  • 8/19/2019 Temario de Laravel 5-1[

    50/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    51/114

  • 8/19/2019 Temario de Laravel 5-1[

    52/114

    Bases de datos

    Crear / Editar / Eliminardatos

    ✘ Guardar datos entre

    pedidos

    ✘ Optimizados parabúsqueda

    ✘ Transaccionalidad

    Relacionales (SQL)

    ✘ MySQL

    ✘ PostgreSQL

    No relacionales (NoSQL)

    ✘ MongoDB

    ✘ Redis

    ✘ Oracle

    ✘ etc...

    ✘ Cassandra

    ✘ etc...

  • 8/19/2019 Temario de Laravel 5-1[

    53/114

    Bases de datos

    PDO -PHP Data Objects

    ✘ Abstracción de base de datos

    ✘ Modelo de objetos

    ✘ Estándar recomendado por la comunidad

  • 8/19/2019 Temario de Laravel 5-1[

    54/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    55/114

    Repositorios

  • 8/19/2019 Temario de Laravel 5-1[

    56/114

    Repositorios (Repositories )

    ✘ Encapsulan el acceso a datos

    ✘ Se modelan como una colección

    ✘ Separan lógica de persistencia

  • 8/19/2019 Temario de Laravel 5-1[

    57/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    58/114

    Errores yExcepciones

  • 8/19/2019 Temario de Laravel 5-1[

    59/114

    Errores y Excepciones (Exceptions )

    ✘Detienen el flujo normal de la aplicación

    ✘ Comunican qué falló

    ✘ Nos permiten reaccionar al error y decidir cómo

    continuar

  • 8/19/2019 Temario de Laravel 5-1[

    60/114

    ¡hagamos código!errores! 

  • 8/19/2019 Temario de Laravel 5-1[

    61/114

    Eventos

  • 8/19/2019 Temario de Laravel 5-1[

    62/114

    Eventos (Events )

    ✘ Modelan un hecho que ya sucedió

    ✘ Otros objetos pueden reaccionar a ellos

    ✘ Nos permite agregar efectos secundarios

    ✘ Arquitectura orientada a eventos

  • 8/19/2019 Temario de Laravel 5-1[

    63/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    64/114

    Resumen

    Capas

    ✘Define roles

    ✘ Separación de

    arquitectura

    Servicios

    ✘ Coordinación

    ✘ Comunicación

    ✘ Sin estado

      ase de datos

    ✘Almacenar

    ✘ Buscar

    ✘ Persistencia

    Repositorios

    ✘ Acceso datos

    ✘ Colección

    ✘ Separa capas

    Excepciones

    ✘Detiene flujo

    ✘ Recuperación

    ✘ Notificación

    Eventos

    ✘ Hecho pasado

    ✘ Efectos

    secundarios

  • 8/19/2019 Temario de Laravel 5-1[

    65/114

    Gracias@guiwoda/guiwoda

  • 8/19/2019 Temario de Laravel 5-1[

    66/114

    LaravelClase 1

    Fundamentos

     Joseph Cohen - @joecohens

  • 8/19/2019 Temario de Laravel 5-1[

    67/114

    ¿Qué es Laravel?Laravel es un framework moderno de PHP

  • 8/19/2019 Temario de Laravel 5-1[

    68/114

    Objetivos

    ✘ Empezar proyectos rápidamente

    ✘ Divertido de usar

    ✘ Fácil de entender

    ✘ Promueve buenas prácticas

    ✘ Promueve los patrones S.O.L.I.D

  • 8/19/2019 Temario de Laravel 5-1[

    69/114

    La base

    ✘ Composer

    ✘ Componentes de Symfony

    ✘ Swiftmail

    ✘ Monolog

    ✘ Carbon

    ✘ PSR-7

    ✘ Y más ...

  • 8/19/2019 Temario de Laravel 5-1[

    70/114

    Principales Características

    ✘ Artisan CLI

    ✘ Controladores

    ✘ Eloquent ORM

    ✘ Migraciones

    ✘ Blade templates

    ✘ Poderoso Router

    ✘ Cache

    ✘ Eventos

    ✘ Autenticación

    ✘ Queues

    ✘ ACL

    ✘ Poderoso contenedor

  • 8/19/2019 Temario de Laravel 5-1[

    71/114

    Ecosistema

    ✘ Homestead

    ✘ Support

    ✘ Cashier y Socialite

    ✘ Elixir

    ✘ Forge

    ✘ Envoyer

  • 8/19/2019 Temario de Laravel 5-1[

    72/114

    INSTALACIÓN

  • 8/19/2019 Temario de Laravel 5-1[

    73/114

    Máquinas Virtuales

     YHomestead

  • 8/19/2019 Temario de Laravel 5-1[

    74/114

    Configuración

  • 8/19/2019 Temario de Laravel 5-1[

    75/114

    Rutas

  • 8/19/2019 Temario de Laravel 5-1[

    76/114

    Rutas

    ✘ Métodos HTTP (GET, POST, PUT, PATCH, DELETE)

    ✘ Configuración de parámetros

    ○ Requeridos

    ○ Opcionales

    ○ Regex

    ✘ Agrupadas

    ✘ Por nombre

  • 8/19/2019 Temario de Laravel 5-1[

    77/114

    ¡HAGAMOS RUTAS!

  • 8/19/2019 Temario de Laravel 5-1[

    78/114

    Controladores

  • 8/19/2019 Temario de Laravel 5-1[

    79/114

  • 8/19/2019 Temario de Laravel 5-1[

    80/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    81/114

    Blade

    B

  • 8/19/2019 Temario de Laravel 5-1[

    82/114

    Blade

    ✘ Simple pero poderoso

    ✘ Puede ejecutar PHP directamente

    ✘ Compila a PHP y se guardan en Cache

    ✘ Herencia de vistas

    S

  • 8/19/2019 Temario de Laravel 5-1[

    83/114

    Sintaxis

    ✘{{ variable }} {{{ variable_crudo }}} @{{ javascript }}

    ✘ @extend(‘layout’)

    ✘ @section(‘lateral’) @stop

    ✘ @if (true) @else @endif 

    ✘ @foreach($vars as $var) @endforeach

    ✘ @unless(false) @endunless

    ✘ @include(‘parcial’)

  • 8/19/2019 Temario de Laravel 5-1[

    84/114

  • 8/19/2019 Temario de Laravel 5-1[

    85/114

    Elixir

  • 8/19/2019 Temario de Laravel 5-1[

    86/114

    Artisan

    Lí o o

  • 8/19/2019 Temario de Laravel 5-1[

    87/114

    Línea de comando

    ✘ Crear clases con facilidad

    ✘ Crear migraciones de bases de datos

    ✘ Configura y controla Queues

    ✘ Configura y limpia Cache

    ✘ Llenar la base de datos con datos de prueba

    ✘ Acceso a la aplicación por medio de la consola

  • 8/19/2019 Temario de Laravel 5-1[

    88/114

    Migraciones

    Migraciones

  • 8/19/2019 Temario de Laravel 5-1[

    89/114

    Migraciones

    ✘ “Control de versión” para la base de datos

    ✘ Mapeo de campos de base de datos

    ✘ Fácil de compartir con otros desarrolladores

    ✘ Fácil de hacer cambios al esquema de base de datos

    ✘ Posibilidad de regresar cambios

  • 8/19/2019 Temario de Laravel 5-1[

    90/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    91/114

    Modelos y Eloquent 

    Modelos y Eloquent

  • 8/19/2019 Temario de Laravel 5-1[

    92/114

    Modelos y Eloquent 

    ✘ API Común para varias bases de datos

    ✘ Simple ActiveRecord

    Cada tabla tiene su modelo

    ✘ Operaciones Select, Insert, Update, Delete

    ✘ Definen relaciones entre ellos

    ○ Uno a uno

    ○ Uno a muchos

    ○ Muchos a muchos

  • 8/19/2019 Temario de Laravel 5-1[

    93/114

    Relaciones

  • 8/19/2019 Temario de Laravel 5-1[

    94/114

    Colecciones

  • 8/19/2019 Temario de Laravel 5-1[

    95/114

    Colecciones

  • 8/19/2019 Temario de Laravel 5-1[

    96/114

     Validación

  • 8/19/2019 Temario de Laravel 5-1[

    97/114

    Autenticación

  • 8/19/2019 Temario de Laravel 5-1[

    98/114

    Service Container

    Service Container

  • 8/19/2019 Temario de Laravel 5-1[

    99/114

    Service Container

    ✘ Control de dependencias

    ✘ Inyección de dependencias

    ✘ Múltiples formas de crear instancias

    ○ Bind

    ○ Singleton

    ○ Instance

  • 8/19/2019 Temario de Laravel 5-1[

    100/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    101/114

    Repositorios

  • 8/19/2019 Temario de Laravel 5-1[

    102/114

    Eventos

    Eventos

  • 8/19/2019 Temario de Laravel 5-1[

    103/114

    Eventos

    ✘ Patrón simple de Observer en PHP

    ✘ Múltiples suscriptores a un evento

    ✘ Desacoplan código procedural

    ✘ Ayudan a extender funcionalidad

  • 8/19/2019 Temario de Laravel 5-1[

    104/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    105/114

    Queues

    Queues

  • 8/19/2019 Temario de Laravel 5-1[

    106/114

    Queues

    ✘ Provee un API común para varios servicios de Queues

    ✘ Mandar tareas a segundo plano

    ✘ Control de tareas en segundo plano

  • 8/19/2019 Temario de Laravel 5-1[

    107/114

    ¡hagamos código!

  • 8/19/2019 Temario de Laravel 5-1[

    108/114

     Tests

    Test

  • 8/19/2019 Temario de Laravel 5-1[

    109/114

     Test 

    ✘ Precargado con PHPUnit

    ✘ Herramientas para test de funcionalidad

    ✘ Model Factory para crear mocks de modelos

    ✘ Migrar la base de datos

    ✘ Esperar eventos

    ✘ Y más

  • 8/19/2019 Temario de Laravel 5-1[

    110/114

  • 8/19/2019 Temario de Laravel 5-1[

    111/114

    Comandos

  • 8/19/2019 Temario de Laravel 5-1[

    112/114

    Paquetes

  • 8/19/2019 Temario de Laravel 5-1[

    113/114

    Deploy

  • 8/19/2019 Temario de Laravel 5-1[

    114/114

    Gracias@joecohens

    /joecohens