PHP Tutorial Screencasts
Silex 



Microframework y
camino fácil de aprender
Symfony
!
!
!
!
!
!
• Husband of the much more
talented @leannapelham
PHP Tutorial Screencasts
knplabs.com
github.com/weaverryan
•...
PHP Tutorial Screencasts
knplabs.com
github.com/weaverryan
• Viví en Querétaro en 2003 para cuatro meses

• Hablé casi 5 p...
Capítulo 1
!
La anatomía de cualquier
web framework
@weaverryan
@weaverryan
Una aplicación
compleja que nos
da saludos!
Configure Apache
O usen al web server
nativo de PHP!
php -S localhost:8000
@weaverryan
*Se puede usar este web server para Drupal también
Request -> Response Framework
Request:
GET /hello/drupalmx
Routing:
determina una función que puede
crear esta página (el ...
Una ruta que coincide
cuando el URI es
/hello/*@weaverryan
Si el URI coincide la ruta,
Silex ejecuta esta
función (el controller)
@weaverryan
El valor de {name} se
pasa como argumento
al controller
@weaverryan
Construimos la pagina
y celebrar!
@weaverryan
Request -> Response Framework
Request:
GET /hello/drupalmx
Routing:
determina una función que puede
crear esta página (el ...
Capítulo 2
!
Request-Response
Nuestro Trabajo:
Entender el “request” y
crear un “response”
@weaverryan
El Request
@weaverryan
GET /hello/drupalmx?page=5 HTTP/1.1!
Host: localhost:8000!
Connection: keep-alive!
Cache-Control: m...
El Request
@weaverryan
GET /hello/drupalmx?page=5 HTTP/1.1!
Host: localhost:8000!
Connection: keep-alive!
Cache-Control: m...
El Request
@weaverryan
GET /hello/drupalmx?page=5 HTTP/1.1!
Host: localhost:8000!
Connection: keep-alive!
Cache-Control: m...
El Response
@weaverryan
HTTP/1.1 200 OK!
Host: localhost:8000!
Cache-Control: no-cache!
Date: Wed, 23 Apr 2014 16:25:03 GM...
El Response
@weaverryan
El código del response
Los Response headersHTTP/1.1 200 OK!
Host: localhost:8000!
Cache-Control: n...
En PHP, el “request”
mensaje se deconstruye
a los “superglobals”
@weaverryan
Para crear el response,
usamos “header” y echo
content
@weaverryan
@weaverryan
El Request en Silex
@weaverryan
El Response en Silex
Capítulo 3
!
Namespaces & Autoloading
https://www.flickr.com/photos/chrisjeriko/8599248142
El controller puede ser
cualquier función
Controller como método en clase
@weaverryan
Controller como método en clase
@weaverryan
PHP Namespaces
@weaverryan
Namespaces nos da nombres max largos	

nombre: DrupalacmeControllerDemoController
PHP Namespaces
@weaverryan
Autoloading
@weaverryan
No se necesita usar
require/include si:
!
A. El namespace es igual

al directorio
!
B. La clase es...
Capítulo 4:
!
Servicios y el “container”
Servicios: Objetos útiles
@weaverryan
El container: el objeto que
contiene todos los servicios
@weaverryan
En Silex, Symfony y Drupal 8,
existe un “container”.
!
Si lo tienes, puede usar los
servicios (objetos útiles)
Podemos usar el servicio
de Twig para
render un template?
@weaverryan
El “container” in SilexEl servicio “twig”
Request -> Response Framework
Request:
GET /hello/drupalmx
Routing:
determina una función que puede
crear esta página (el ...
Capítulo 5:
!
Eventos
https://www.flickr.com/photos/bmp_creep/8064779382
Como Drupal “hooks”,
Silex tiene eventos
@weaverryan
Puede decir a Silex:

“Por favor, cuando
ocurra el evento XXXXX,
ejecute esa función”
@weaverryan
Request -> Response Framework
Request:
GET /hello/drupalmx
Routing:
determina una función que puede
crear esta página (el ...
@weaverryan
@weaverryan
Capítulo 6:
!
El Profiler
https://www.flickr.com/photos/fukagawa/415772853
Silex (por Symfony)
tiene un “profiler”
@weaverryan
@weaverryan
Contiene muchísimo
información, incluyendo
el “timeline”
@weaverryan
@weaverryan
1) kernel.request evento
2) Routing
3) Ejecuta el controller
4) Nuestro “listener” en kernel.view
Capítulo 7:
!
Todo lo mismo en Drupal 8
Cómo podemos crear
esto en Drupal 8?
Gracias a mi amigo Jesus
Olivas por ya tener blog
posts muy buenos
@jmolivas
jmolivas.com
http://bit.ly/d8-hello
1) Crear un module “acme”
@jmolivas http://bit.ly/d8-hello
2) Crear routing
@jmolivas http://bit.ly/d8-hello
Nombre del controller
3) Crear el controller
@jmolivas http://bit.ly/d8-hello
Module, Routing, Controller
@jmolivas http://bit.ly/d8-hello
@weaverryan
Tiene Drupal 8 un
container con servicios?
@weaverryan
El Container
Donde se debe encuentra
el container puede cambiar
antes del fin de Drpual 8
@weaverryan
@weaverryan
Pero sí hay un container
!
Y sí continue todos los
objetos útiles (servicios) de
Drupal
Hay eventos como Silex?
@weaverryan
¡Sí! Existen los mismos
eventos y más
1) Crear una clase “listener”
Se ejecuta al fin del request	

!
Añadimos JavaScript a cada	

pagina en el sitio
2) Añadir un nuevo servicio
al container
@weaverryan
Ahora, el container tiene un servicio	

que se llama “acme.view_subscriber”
El event_subscriber tag dice al Dr...
@weaverryan
Y existe el profiler?
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
@weaverryan
https://drupal.org/project/webprofiler
Capítulo 8
!
!
, y
Temas Principales
• Request/Response	

!
• Routing/Controller	

!
• PHP Namespaces/Autoloading	

!
• Services/Container

•...
Se puede usar Silex
para aprender Drupal
Se puede usar Silex
para aprender Symfony
Se puede usar Symfony
para aprender Drupal
Al fin, tienen mas
herramientas para
cualquier problema
PHP Tutorial Screencasts
Ryan Weaver
@weaverryan
¡Gracias!
@weaveryan
@KnpUniversity
Silex: Microframework y camino fácil de aprender Symfony
Upcoming SlideShare
Loading in...5
×

Silex: Microframework y camino fácil de aprender Symfony

585

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
585
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Silex: Microframework y camino fácil de aprender Symfony

  1. 1. PHP Tutorial Screencasts Silex 
 
 Microframework y camino fácil de aprender Symfony
  2. 2. ! ! ! ! ! ! • 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!
  3. 3. 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
  4. 4. Capítulo 1 ! La anatomía de cualquier web framework
  5. 5. @weaverryan
  6. 6. @weaverryan Una aplicación compleja que nos da saludos!
  7. 7. Configure Apache
  8. 8. O usen al web server nativo de PHP! php -S localhost:8000 @weaverryan
  9. 9. *Se puede usar este web server para Drupal también
  10. 10. 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
  11. 11. Una ruta que coincide cuando el URI es /hello/*@weaverryan
  12. 12. Si el URI coincide la ruta, Silex ejecuta esta función (el controller) @weaverryan
  13. 13. El valor de {name} se pasa como argumento al controller @weaverryan
  14. 14. Construimos la pagina y celebrar! @weaverryan
  15. 15. 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
  16. 16. Capítulo 2 ! Request-Response
  17. 17. Nuestro Trabajo: Entender el “request” y crear un “response” @weaverryan
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. 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
  23. 23. En PHP, el “request” mensaje se deconstruye a los “superglobals” @weaverryan
  24. 24. Para crear el response, usamos “header” y echo content @weaverryan
  25. 25. @weaverryan El Request en Silex
  26. 26. @weaverryan El Response en Silex
  27. 27. Capítulo 3 ! Namespaces & Autoloading https://www.flickr.com/photos/chrisjeriko/8599248142
  28. 28. El controller puede ser cualquier función
  29. 29. Controller como método en clase @weaverryan
  30. 30. Controller como método en clase @weaverryan
  31. 31. PHP Namespaces @weaverryan Namespaces nos da nombres max largos nombre: DrupalacmeControllerDemoController
  32. 32. PHP Namespaces @weaverryan
  33. 33. Autoloading @weaverryan No se necesita usar require/include si: ! A. El namespace es igual
 al directorio ! B. La clase es igual al
 nombre de archivo (+.php) Se llama PSR-0
  34. 34. Capítulo 4: ! Servicios y el “container”
  35. 35. Servicios: Objetos útiles @weaverryan
  36. 36. El container: el objeto que contiene todos los servicios @weaverryan
  37. 37. En Silex, Symfony y Drupal 8, existe un “container”. ! Si lo tienes, puede usar los servicios (objetos útiles)
  38. 38. Podemos usar el servicio de Twig para render un template?
  39. 39. @weaverryan El “container” in SilexEl servicio “twig”
  40. 40. 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)
  41. 41. Capítulo 5: ! Eventos https://www.flickr.com/photos/bmp_creep/8064779382
  42. 42. Como Drupal “hooks”, Silex tiene eventos @weaverryan
  43. 43. Puede decir a Silex:
 “Por favor, cuando ocurra el evento XXXXX, ejecute esa función” @weaverryan
  44. 44. 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
  45. 45. @weaverryan
  46. 46. @weaverryan
  47. 47. Capítulo 6: ! El Profiler https://www.flickr.com/photos/fukagawa/415772853
  48. 48. Silex (por Symfony) tiene un “profiler” @weaverryan
  49. 49. @weaverryan
  50. 50. Contiene muchísimo información, incluyendo el “timeline” @weaverryan
  51. 51. @weaverryan
  52. 52. 1) kernel.request evento 2) Routing 3) Ejecuta el controller 4) Nuestro “listener” en kernel.view
  53. 53. Capítulo 7: ! Todo lo mismo en Drupal 8
  54. 54. Cómo podemos crear esto en Drupal 8?
  55. 55. Gracias a mi amigo Jesus Olivas por ya tener blog posts muy buenos @jmolivas jmolivas.com
  56. 56. http://bit.ly/d8-hello
  57. 57. 1) Crear un module “acme” @jmolivas http://bit.ly/d8-hello
  58. 58. 2) Crear routing @jmolivas http://bit.ly/d8-hello Nombre del controller
  59. 59. 3) Crear el controller @jmolivas http://bit.ly/d8-hello
  60. 60. Module, Routing, Controller @jmolivas http://bit.ly/d8-hello
  61. 61. @weaverryan
  62. 62. Tiene Drupal 8 un container con servicios?
  63. 63. @weaverryan El Container
  64. 64. Donde se debe encuentra el container puede cambiar antes del fin de Drpual 8 @weaverryan
  65. 65. @weaverryan Pero sí hay un container ! Y sí continue todos los objetos útiles (servicios) de Drupal
  66. 66. Hay eventos como Silex?
  67. 67. @weaverryan ¡Sí! Existen los mismos eventos y más
  68. 68. 1) Crear una clase “listener”
  69. 69. Se ejecuta al fin del request ! Añadimos JavaScript a cada pagina en el sitio
  70. 70. 2) Añadir un nuevo servicio al container
  71. 71. @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
  72. 72. @weaverryan
  73. 73. Y existe el profiler?
  74. 74. @weaverryan https://drupal.org/project/webprofiler
  75. 75. @weaverryan https://drupal.org/project/webprofiler
  76. 76. @weaverryan https://drupal.org/project/webprofiler
  77. 77. @weaverryan https://drupal.org/project/webprofiler
  78. 78. @weaverryan https://drupal.org/project/webprofiler
  79. 79. @weaverryan https://drupal.org/project/webprofiler
  80. 80. Capítulo 8 ! ! , y
  81. 81. Temas Principales • Request/Response ! • Routing/Controller ! • PHP Namespaces/Autoloading ! • Services/Container
 • Events/Listeners
 • Profiler @weaverryan Todos son iguales en Silex, Drupal y Symfony
  82. 82. Se puede usar Silex para aprender Drupal
  83. 83. Se puede usar Silex para aprender Symfony
  84. 84. Se puede usar Symfony para aprender Drupal
  85. 85. Al fin, tienen mas herramientas para cualquier problema
  86. 86. PHP Tutorial Screencasts Ryan Weaver @weaverryan ¡Gracias!
  87. 87. @weaveryan @KnpUniversity
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×