Silex: Microframework y camino fácil de aprender Symfony
Upcoming SlideShare
Loading in...5
×
 

Silex: Microframework y camino fácil de aprender Symfony

on

  • 333 views

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

Statistics

Views

Total Views
333
Views on SlideShare
324
Embed Views
9

Actions

Likes
1
Downloads
7
Comments
0

1 Embed 9

http://www.slideee.com 9

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Silex: Microframework y camino fácil de aprender Symfony Silex: Microframework y camino fácil de aprender Symfony Presentation Transcript

  • 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 • Lead contributor to the Symfony documentation ! • KnpLabs US - Symfony consulting, training, Kumbaya ! • Writer for KnpUniversity.com screencasts Buenos Dias!
  • 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
  • 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 controller) El Controller: nuestro código: construye la pagina Response: Hello drupalmx!@weaverryan
  • 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 controller) El Controller: nuestro código: construye la pagina Response: Hello drupalmx!@weaverryan
  • 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: 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 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
  • 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
  • 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
  • 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
  • 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 igual al
 nombre de archivo (+.php) Se llama PSR-0
  • 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 controller) El Controller: nuestro código: construye la pagina Response: Hello drupalmx!@weaverryan Container (con servicios)
  • 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 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
  • @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 Drupal que este servicio quiere ser un “listener” para algunos eventos
  • @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
 • Events/Listeners
 • Profiler @weaverryan Todos son iguales en Silex, Drupal y Symfony
  • 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