88
PHP Tutorial Screencasts Silex Microframework y camino fácil de aprender Symfony

Silex: Microframework y camino fácil de aprender Symfony

Embed Size (px)

DESCRIPTION

Ya quieres aprender Symfony? Bueno! Si eres en usuario de Drupal o si quieres aumentar sus habilidades, aprender Symfony puede ayudarte. Sin embargo, aprender Symfony puede ser difícil - y muchas ideas nuevas (pero buenas) como PHP namespaces, Composer, y código "object-oriented". Te presento a Silex: el Microframework que se construye por las mismos pedazos (HttpFoundation, HttpKernel, Composer, etc) como el Symfony Framework y Drupal 8. En esta charla, vamos a crear un mini-app con Silex para mostrarte como fácil puede ser y cuales partes son los mismos como Symfony y Drupal. Al fin, vas a estar listo entender Drupal 8 o crear su primer proyecto con Symfony. Y porque esta charla sería mi primera en español, puedas disfrutar esta aventura conmigo :).

Citation preview

Page 1: Silex: Microframework y camino fácil de aprender Symfony

PHP Tutorial Screencasts

Silex

Microframework y camino fácil de aprender

Symfony

Page 2: Silex: Microframework y camino fácil de aprender Symfony

!

!

!

!

!!• Husband of the much more talented @leannapelham

PHP Tutorial Screencasts

knplabs.com github.com/weaverryan

• Lead contributor to the Symfony documentation !• KnpLabs US - Symfony consulting, training, Kumbaya !• Writer for KnpUniversity.com

screencasts

Buenos Dias!

Page 3: Silex: Microframework y camino fácil de aprender Symfony

PHP Tutorial Screencasts

knplabs.com github.com/weaverryan

• Viví en Querétaro en 2003 para cuatro meses

• Hablé casi 5 palabras en español.

• Este gringo estaba *sorprendido* por el costumbre de besar para saludar a las mujeres

Querétaro

Page 4: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 1 !

La anatomía de cualquier web framework

Page 5: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Page 6: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Una aplicación compleja que nos

da saludos!

Page 7: Silex: Microframework y camino fácil de aprender Symfony

Configure Apache

Page 8: Silex: Microframework y camino fácil de aprender Symfony

O usen al web server nativo de PHP!

php -S localhost:8000

@weaverryan

Page 9: Silex: Microframework y camino fácil de aprender Symfony

*Se puede usar este web server para Drupal también

Page 10: Silex: Microframework y camino fácil de aprender Symfony

Request -> Response Framework

Request: GET /hello/drupalmx

Routing: determina una función que puede crear esta página (el controller)

El Controller: nuestro código: construye la pagina

Response: Hello drupalmx!@weaverryan

Page 11: Silex: Microframework y camino fácil de aprender Symfony

Una ruta que coincide cuando el URI es

/hello/*@weaverryan

Page 12: Silex: Microframework y camino fácil de aprender Symfony

Si el URI coincide la ruta, Silex ejecuta esta

función (el controller)

@weaverryan

Page 13: Silex: Microframework y camino fácil de aprender Symfony

El valor de {name} se pasa como argumento

al controller

@weaverryan

Page 14: Silex: Microframework y camino fácil de aprender Symfony

Construimos la pagina y celebrar!

@weaverryan

Page 15: Silex: Microframework y camino fácil de aprender Symfony

Request -> Response Framework

Request: GET /hello/drupalmx

Routing: determina una función que puede crear esta página (el controller)

El Controller: nuestro código: construye la pagina

Response: Hello drupalmx!@weaverryan

Page 16: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 2 !

Request-Response

Page 17: Silex: Microframework y camino fácil de aprender Symfony

Nuestro Trabajo: Entender el “request” y

crear un “response”

@weaverryan

Page 18: Silex: Microframework y camino fácil de aprender Symfony

El Request

@weaverryan

GET /hello/drupalmx?page=5 HTTP/1.1!Host: localhost:8000!Connection: keep-alive!Cache-Control: max-age=0!Accept: text/html,application/xhtml+xml!User-Agent: Mozilla/5.0!Cookie: PHPSESSID=abcdefg; has_js=1;

El cliente nos da un mensaje sencillo que describe qué quiere

Page 19: Silex: Microframework y camino fácil de aprender Symfony

El Request

@weaverryan

GET /hello/drupalmx?page=5 HTTP/1.1!Host: localhost:8000!Connection: keep-alive!Cache-Control: max-age=0!Accept: text/html,application/xhtml+xml!User-Agent: Mozilla/5.0!Cookie: PHPSESSID=abcdefg; has_js=1;

El cliente nos da un mensaje sencillo que describe qué quiere

El método HTTP

El URI

Page 20: Silex: Microframework y camino fácil de aprender Symfony

El Request

@weaverryan

GET /hello/drupalmx?page=5 HTTP/1.1!Host: localhost:8000!Connection: keep-alive!Cache-Control: max-age=0!Accept: text/html,application/xhtml+xml!User-Agent: Mozilla/5.0!Cookie: PHPSESSID=abcdefg; has_js=1;

El cliente nos da un mensaje sencillo que describe qué quiere

Los Request headers

Page 21: Silex: Microframework y camino fácil de aprender Symfony

El Response

@weaverryan

HTTP/1.1 200 OK!Host: localhost:8000!Cache-Control: no-cache!Date: Wed, 23 Apr 2014 16:25:03 GMT!Content-Type: text/html;!!

Hello drupalmx

Page 22: Silex: Microframework y camino fácil de aprender Symfony

El Response

@weaverryan

El código del response

Los Response headersHTTP/1.1 200 OK!Host: localhost:8000!Cache-Control: no-cache!Date: Wed, 23 Apr 2014 16:25:03 GMT!Content-Type: text/html;!!

<h1>Hello drupalmx</h1>

El cuerpo

Page 23: Silex: Microframework y camino fácil de aprender Symfony

En PHP, el “request” mensaje se deconstruye

a los “superglobals”

@weaverryan

Page 24: Silex: Microframework y camino fácil de aprender Symfony

Para crear el response, usamos “header” y echo

content

@weaverryan

Page 25: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

El Request en Silex

Page 26: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

El Response en Silex

Page 27: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 3 !

Namespaces & Autoloading

https://www.flickr.com/photos/chrisjeriko/8599248142

Page 28: Silex: Microframework y camino fácil de aprender Symfony

El controller puede ser cualquier función

Page 29: Silex: Microframework y camino fácil de aprender Symfony

Controller como método en clase

@weaverryan

Page 30: Silex: Microframework y camino fácil de aprender Symfony

Controller como método en clase

@weaverryan

Page 31: Silex: Microframework y camino fácil de aprender Symfony

PHP Namespaces

@weaverryan

Namespaces nos da nombres max largos nombre: Drupal\acme\Controller\DemoController

Page 32: Silex: Microframework y camino fácil de aprender Symfony

PHP Namespaces

@weaverryan

Page 33: Silex: Microframework y camino fácil de aprender Symfony

Autoloading

@weaverryan

No se necesita usar require/include si: !

A. El namespace es igualal directorio

!

B. La clase es igual alnombre de archivo (+.php)

Se llama PSR-0

Page 34: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 4: !

Servicios y el “container”

Page 35: Silex: Microframework y camino fácil de aprender Symfony

Servicios: Objetos útiles

@weaverryan

Page 36: Silex: Microframework y camino fácil de aprender Symfony

El container: el objeto que contiene todos los servicios

@weaverryan

Page 37: Silex: Microframework y camino fácil de aprender Symfony

En Silex, Symfony y Drupal 8, existe un “container”.

!

Si lo tienes, puede usar los servicios (objetos útiles)

Page 38: Silex: Microframework y camino fácil de aprender Symfony

Podemos usar el servicio de Twig para render un template?

Page 39: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

El “container” in SilexEl servicio “twig”

Page 40: Silex: Microframework y camino fácil de aprender Symfony

Request -> Response Framework

Request: GET /hello/drupalmx

Routing: determina una función que puede crear esta página (el controller)

El Controller: nuestro código: construye la pagina

Response: Hello drupalmx!@weaverryan

Container (con servicios)

Page 41: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 5: !

Eventos

https://www.flickr.com/photos/bmp_creep/8064779382

Page 42: Silex: Microframework y camino fácil de aprender Symfony

Como Drupal “hooks”, Silex tiene eventos

@weaverryan

Page 43: Silex: Microframework y camino fácil de aprender Symfony

Puede decir a Silex: “Por favor, cuando

ocurra el evento XXXXX, ejecute esa función”

@weaverryan

Page 44: Silex: Microframework y camino fácil de aprender Symfony

Request -> Response Framework

Request: GET /hello/drupalmx

Routing: determina una función que puede crear esta página (el controller)

El Controller: nuestro código: construye la pagina

Response: Hello drupalmx!@weaverryan

Container (con servicios)

Evento: kernel.request

Evento: kernel.controller

Eventos: kernel.view

kernel.response

Page 45: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Page 46: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Page 47: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 6: !

El Profiler

https://www.flickr.com/photos/fukagawa/415772853

Page 48: Silex: Microframework y camino fácil de aprender Symfony

Silex (por Symfony) tiene un “profiler”

@weaverryan

Page 49: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Page 50: Silex: Microframework y camino fácil de aprender Symfony

Contiene muchísimo información, incluyendo

el “timeline”

@weaverryan

Page 51: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Page 52: Silex: Microframework y camino fácil de aprender Symfony

1) kernel.request evento

2) Routing

3) Ejecuta el controller

4) Nuestro “listener” en kernel.view

Page 53: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 7: !

Todo lo mismo en Drupal 8

Page 54: Silex: Microframework y camino fácil de aprender Symfony

Cómo podemos crear esto en Drupal 8?

Page 55: Silex: Microframework y camino fácil de aprender Symfony

Gracias a mi amigo Jesus Olivas por ya tener blog

posts muy buenos

@jmolivas

jmolivas.com

Page 56: Silex: Microframework y camino fácil de aprender Symfony

http://bit.ly/d8-hello

Page 57: Silex: Microframework y camino fácil de aprender Symfony

1) Crear un module “acme”

@jmolivas http://bit.ly/d8-hello

Page 58: Silex: Microframework y camino fácil de aprender Symfony

2) Crear routing

@jmolivas http://bit.ly/d8-hello

Nombre del controller

Page 59: Silex: Microframework y camino fácil de aprender Symfony

3) Crear el controller

@jmolivas http://bit.ly/d8-hello

Page 60: Silex: Microframework y camino fácil de aprender Symfony

Module, Routing, Controller

@jmolivas http://bit.ly/d8-hello

Page 61: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Page 62: Silex: Microframework y camino fácil de aprender Symfony

Tiene Drupal 8 un container con servicios?

Page 63: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

El Container

Page 64: Silex: Microframework y camino fácil de aprender Symfony

Donde se debe encuentra el container puede cambiar antes del fin de Drpual 8

@weaverryan

Page 65: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Pero sí hay un container !

Y sí continue todos los objetos útiles (servicios) de

Drupal

Page 66: Silex: Microframework y camino fácil de aprender Symfony

Hay eventos como Silex?

Page 67: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

¡Sí! Existen los mismos eventos y más

Page 68: Silex: Microframework y camino fácil de aprender Symfony

1) Crear una clase “listener”

Page 69: Silex: Microframework y camino fácil de aprender Symfony
Page 70: Silex: Microframework y camino fácil de aprender Symfony

Se ejecuta al fin del request !

Añadimos JavaScript a cada pagina en el sitio

Page 71: Silex: Microframework y camino fácil de aprender Symfony

2) Añadir un nuevo servicio al container

Page 72: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Ahora, el container tiene un servicio que se llama “acme.view_subscriber”

El event_subscriber tag dice al Drupal que este servicio quiere ser un “listener”

para algunos eventos

Page 73: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

Page 74: Silex: Microframework y camino fácil de aprender Symfony

Y existe el profiler?

Page 75: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

https://drupal.org/project/webprofiler

Page 76: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

https://drupal.org/project/webprofiler

Page 77: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

https://drupal.org/project/webprofiler

Page 78: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

https://drupal.org/project/webprofiler

Page 79: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

https://drupal.org/project/webprofiler

Page 80: Silex: Microframework y camino fácil de aprender Symfony

@weaverryan

https://drupal.org/project/webprofiler

Page 81: Silex: Microframework y camino fácil de aprender Symfony

Capítulo 8 !

!

, y

Page 82: Silex: Microframework y camino fácil de aprender Symfony

Temas Principales

• Request/Response !

• Routing/Controller !

• PHP Namespaces/Autoloading !

• Services/Container

• Events/Listeners

• Profiler

@weaverryan

Todos son iguales en Silex, Drupal y Symfony

Page 83: Silex: Microframework y camino fácil de aprender Symfony

Se puede usar Silex para aprender Drupal

Page 84: Silex: Microframework y camino fácil de aprender Symfony

Se puede usar Silex para aprender Symfony

Page 85: Silex: Microframework y camino fácil de aprender Symfony

Se puede usar Symfony para aprender Drupal

Page 86: Silex: Microframework y camino fácil de aprender Symfony

Al fin, tienen mas herramientas para cualquier problema

Page 87: Silex: Microframework y camino fácil de aprender Symfony

PHP Tutorial Screencasts

Ryan Weaver @weaverryan

¡Gracias!

Page 88: Silex: Microframework y camino fácil de aprender Symfony

@weaveryan @KnpUniversity