temario de laravel 5-1[
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