Your SlideShare is downloading. ×
  • Like
Silex: Microframework y camino fácil de aprender Symfony
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Silex: Microframework y camino fácil de aprender Symfony

  • 396 views
Published

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 …

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
396
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
10
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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