El documento describe cómo Drupal 8 está adoptando componentes del framework Symfony para proporcionar una arquitectura orientada a objetos, servicios web y compatibilidad con otras aplicaciones. Algunos de los componentes de Symfony que se utilizan incluyen HttpFoundation, HttpKernel, routing, EventDispatcher, DependencyInjection y ClassLoader. Esto ayudará a Drupal a transformarse de un CMS a una plataforma para construir todo tipo de aplicaciones web.
2. ● Servirse de un proyecto
libre con bibliotecas y
técnicas modernas.
● Integrarse con otras
aplicaciones.
● Symfony comparte la
visión de construir una
arquitectura a bajo
nivel.
Porque!!!
3. Drupal quiere proveer Servicios Web.
(Web services and context core initicative)
Transformarse de un CMS de primera clase en
un servidor de todo tipò de aplicaciones web
de primera clase
¿Enserio?
ya pues.... porque!!
4. Vienen en la ruta:
.../core/vendor
.../core/vendor/symfony
.../core/vendor/symfony-cmf
Componentes de Symfony en D8
5. Define una capa Orientada a Objetos para
especificaciones HTTP
use SymfonyComponentHttpFoundationRequest;
$request = Request::createFromGlobals();
$request = new Request(
$_GET,
$_POST,
array(),
$_COOKIE,
$_FILES,
$_SERVER
);
Componente: HttpFoundation
7. Mapea un HTTP request en un conjunto de
variables de configuración.
Drupal 8 define las rutas de un módulo en
un archivo de configuración YAML.
Este es el sucesor de hook_menu
Componente:routing
contact_category_list:
pattern: '/admin/structure/contact'
defaults:
_entity_list: 'contact_category'
requirements:
_permission: 'administer contact
forms'
extracto de
contact.routing.yml
8. ● Implementa un Observador de todo el
sistema. Da lugar a un sistema de plugins
para controlar Drupal.
● Esto reemplazará el sistema de Hooks
gradualmente.
● Se prevé que D9 aún dispondrá hooks.
Componente: EventDispacher
9. Es una manera de escribir clases
desconectadas: reutilizables, testeables
unitariamente, El contenedor DI permite su
interacción.
Component:
DependencyInjection
use SymfonyComponentDependencyInjectionReference;
// ...
$container->setParameter('mailer.transport', 'sendmail');
$container
->register('mailer', 'Mailer')
->addArgument('%mailer.transport%');
$container
->register('newsletter_manager', 'NewsletterManager')
->addMethodCall('setMailer', array(new Reference('mailer')));
10. Esto hace que se carguen las clases cuando
se necesitan. Nos preocuparemos menos del
module_load_include.
PSR-0 Standard
Componente:ClassLoader
11. ● Blog de Dries
http://buytaert.net/tag/the-future
● Componentes de symfony
http://symfony.com/components
● Symfony components in drupal 8
http://crossfunctional.net/blog/2013/mar/symfony-components-in-drupal-8
Referencias