SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Symfony en Drupal 8
Pedro Lozano

Octubre 2012
Sobre Mi
• @peterlozano
• Bluespark Labs       http://bluespark.com


• http://drupal.org/user/123766
• http://peterlozano.com
Estructura de la sesión

• Un poco de historia (WSCCI)
 • Timeline: http://bit.ly/symd8tl

• Estado actual
WSCCI
• Web Services and Context Core Initiative
• http://groups.drupal.org/wscci
• Larry Garfield (aka: @crell)

• Una de las iniciativas para Drupal 8
• Inicialmente no relacionado con Symfony
WSCCI

• "...transformar Drupal de un CMS de
  primera-clase en un servidor REST de
  primera-clase con un CMS de primera-clase
  encima..."
• "...Para ello, debemos dar a Drupal un
  sistema de contexto, potente y unificado..."
REST Server
REST Server
• Respuestas no-html
 • json, xml, etc...
 • Sin usar módulos contribuidos como
    “Services”
 • ... html es solo un caso concreto
 • Aplicaciones móviles
REST Server
• Respuestas no-página
 • Todo es un bloque que representa
    una pieza de contenido
 • Todos los bloques tienen una URL
 • Útil para renderización asíncrona
  • Bloques via ajax
  • ESI
D7 vs                      D8
                                                       HTTP                                                             Display
                                                                      Request     Pass to    Kernel          Select
                                                       Req.                                                            controller
         Site Title                   Primary Links
Logo                                                                                                             s
                                                                                                          ment
         PageTitle                   Secondary Links                                                  Argu



 Block                                       Block

                                                                                                                      Menu
                                                                                                                      block
 Block                                       Block                                   Content block


                                                                                                                      Advert
 Block                                                        Field                                                   block
                      Content Area                            block
 Block                                       Block
region                                      region
                                                              Field
                                                              block               View      Field block
                                                                                  block                               Who's
                                                                                                                      online
                                                                                                                      block
                                                              View
                                                              block                                                   Custom
                                                                                      Custom block
                                                                                                                       block

                                                          Advert
                      Block region
                                                          block

                                                                                Custom           Custom text block
                                                                                 block
                      Block region
Contexto
• No existe un sistema de contexto
• Información repartida por globales
 • $_GET, $_POST, $user, arg(), $language,...
• Unificar información global/contextual
• Se investigan librerías que ya hagan esto
 • Zend / Symfony
 • http://groups.drupal.org/node/167299
Mundo PHP

• PSR-0: Estandariza el autoload de clases
• Composer: facilita compartir código
• Symfony Components
• Creación de Frameworks basados en
  Symfony (http://bit.ly/T35TK2)
Symfony 2
• Componentes
 • Funcionalidades comunes en web apps
 • Pueden ser utilizados independientemente
 • En Drupal 8 sólo se va a usar esto
• Framework
 • Basado en los componentes
      http://fabien.potencier.org/article/49/what-is-symfony2
HttpFoundation
• Requests, Responses, Files, Cookies, Sessions, ..
• Request


• Response
¿Otros componentes?

• ¿Habrá otros componentes que podamos
  usar? http://drupal.org/node/1263478


• Symfony ya permite implementar gran
  parte de lo que WSCCI se planteaba
Componentes Usados
• HttpFoundation
• ClassLoader
• EventDispatcher
• DependencyInyection
• HttpKernel
• Routing
ClassLoader
• Carga on-demand de los ficheros de clases
• Implementa PSR-0
• Reemplaza al Registro de clases de Drupal 7
EventDispatcher

• En un futuro podría reemplazar al sistema
  de hooks
• Pero no en Drupal 8
• Ya reemplaza a algunos hooks de bajo nivel
• Sistema híbrido
DependencyInyection

• Patrón de diseño “Inyección de dependencias”
• Básicamente, un array de objectos
• Centraliza la creación de objetos/servicios
• Facilita la testabilidad
• drupal_container()->get()
HttpKernel

• Request => Response
• Reestructura toda la lógica
• Compatibilidad con otros frameworks
• Facilidades para caché
Routing
• Reemplaza al sistema de ruteo
 • URL => Callback
• Muerte a hook_menu().
• Posibilidad de que se encuentre en CMI
Colaboración
• Symfony LTS Releases
¿Preguntas?
Gracias / Créditos

• Larry Garfield (@crell)
   • https://github.com/Crell/slides-wscci

• Javier Carranza y Cayetano Soriano
  (Crononauta)

Contenu connexe

En vedette

Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015 Keopx
 
Formularios en Drupal 8
Formularios en Drupal 8Formularios en Drupal 8
Formularios en Drupal 8Atenea tech
 
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Acquia
 
¿Qué es drupal?
¿Qué es drupal? ¿Qué es drupal?
¿Qué es drupal? Atenea tech
 
El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8Ymbra
 
Inciación a Drupal 8
Inciación a Drupal 8Inciación a Drupal 8
Inciación a Drupal 8Julian Valero
 

En vedette (7)

Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 
Formularios en Drupal 8
Formularios en Drupal 8Formularios en Drupal 8
Formularios en Drupal 8
 
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8
 
¿Qué es drupal?
¿Qué es drupal? ¿Qué es drupal?
¿Qué es drupal?
 
El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8
 
Drupal 8, presente y futuro
Drupal 8, presente y futuroDrupal 8, presente y futuro
Drupal 8, presente y futuro
 
Inciación a Drupal 8
Inciación a Drupal 8Inciación a Drupal 8
Inciación a Drupal 8
 

Symfony en Drupal 8. Los Detalles. (Spanish)

  • 1. Symfony en Drupal 8 Pedro Lozano Octubre 2012
  • 2. Sobre Mi • @peterlozano • Bluespark Labs http://bluespark.com • http://drupal.org/user/123766 • http://peterlozano.com
  • 3. Estructura de la sesión • Un poco de historia (WSCCI) • Timeline: http://bit.ly/symd8tl • Estado actual
  • 4. WSCCI • Web Services and Context Core Initiative • http://groups.drupal.org/wscci • Larry Garfield (aka: @crell) • Una de las iniciativas para Drupal 8 • Inicialmente no relacionado con Symfony
  • 5. WSCCI • "...transformar Drupal de un CMS de primera-clase en un servidor REST de primera-clase con un CMS de primera-clase encima..." • "...Para ello, debemos dar a Drupal un sistema de contexto, potente y unificado..."
  • 7. REST Server • Respuestas no-html • json, xml, etc... • Sin usar módulos contribuidos como “Services” • ... html es solo un caso concreto • Aplicaciones móviles
  • 8. REST Server • Respuestas no-página • Todo es un bloque que representa una pieza de contenido • Todos los bloques tienen una URL • Útil para renderización asíncrona • Bloques via ajax • ESI
  • 9. D7 vs D8 HTTP Display Request Pass to Kernel Select Req. controller Site Title Primary Links Logo s ment PageTitle Secondary Links Argu Block Block Menu block Block Block Content block Advert Block Field block Content Area block Block Block region region Field block View Field block block Who's online block View block Custom Custom block block Advert Block region block Custom Custom text block block Block region
  • 10. Contexto • No existe un sistema de contexto • Información repartida por globales • $_GET, $_POST, $user, arg(), $language,... • Unificar información global/contextual • Se investigan librerías que ya hagan esto • Zend / Symfony • http://groups.drupal.org/node/167299
  • 11. Mundo PHP • PSR-0: Estandariza el autoload de clases • Composer: facilita compartir código • Symfony Components • Creación de Frameworks basados en Symfony (http://bit.ly/T35TK2)
  • 12. Symfony 2 • Componentes • Funcionalidades comunes en web apps • Pueden ser utilizados independientemente • En Drupal 8 sólo se va a usar esto • Framework • Basado en los componentes http://fabien.potencier.org/article/49/what-is-symfony2
  • 13. HttpFoundation • Requests, Responses, Files, Cookies, Sessions, .. • Request • Response
  • 14. ¿Otros componentes? • ¿Habrá otros componentes que podamos usar? http://drupal.org/node/1263478 • Symfony ya permite implementar gran parte de lo que WSCCI se planteaba
  • 15. Componentes Usados • HttpFoundation • ClassLoader • EventDispatcher • DependencyInyection • HttpKernel • Routing
  • 16. ClassLoader • Carga on-demand de los ficheros de clases • Implementa PSR-0 • Reemplaza al Registro de clases de Drupal 7
  • 17. EventDispatcher • En un futuro podría reemplazar al sistema de hooks • Pero no en Drupal 8 • Ya reemplaza a algunos hooks de bajo nivel • Sistema híbrido
  • 18. DependencyInyection • Patrón de diseño “Inyección de dependencias” • Básicamente, un array de objectos • Centraliza la creación de objetos/servicios • Facilita la testabilidad • drupal_container()->get()
  • 19. HttpKernel • Request => Response • Reestructura toda la lógica • Compatibilidad con otros frameworks • Facilidades para caché
  • 20. Routing • Reemplaza al sistema de ruteo • URL => Callback • Muerte a hook_menu(). • Posibilidad de que se encuentre en CMI
  • 23. Gracias / Créditos • Larry Garfield (@crell) • https://github.com/Crell/slides-wscci • Javier Carranza y Cayetano Soriano (Crononauta)