Drupal 8, symfony
-
Upload
jeuxdicode -
Category
Documents
-
view
299 -
download
3
description
Transcript of Drupal 8, symfony
DRUPAL 8
, SYM
FONY
J EU
XD
I CO
DE
, 5
DÉ
CE
MB
RE
20
13
Introduction
• Dépôt GitHub– http://github.com/JeUXdiCode
• Présentation1. Qu’est ce que Drupal ?2. Pourquoi Symfony ?3. Les composants Symfony utilisés dans Drupal 84. Ce qui change pour les développeurs5. Module DarkJador (Hello World)
1. Qu’est ce que Drupal ?
• Un CMS• Version 8• Environnement technique• Communauté• Modules• Références• Utilisations
2. Pourquoi Symfony
• Pourquoi un framework– Plus grande communauté– Meilleure prise en main par les devs– Facilité de maintenance– Bonne pratique
• Pourquoi Symfony– Composantes modulaires– Communauté ouverte– Injection de dépendance– Cache HTTP et ESI– Gestion des webservices REST
3. Les composants Symfony utilisés dans Drupal 8
• HttpKernel• Autoloader• DependencyInjection• Routing• EventDispatcher• Twig• HttpCache
3. 1. HTTP Kernel
• Request / Response paradigme• Event Driven• MVC
3. 1. HTTP Kernel
3. 2. Autoloader
• Norme PSR-0– Namespace– Nommage de classe– Arborescence
• Composer
3. 3. Dependency Injection• class Mailer
{ private $transport;
public function __construct() { $this->transport = 'sendmail'; }}
•class Mailer{ private $transport;
public function __construct($transport) { $this->transport = $transport; }
• }
3. 3. Dependency Injection
• parameters: # ... mailer.transport: sendmail
services: mailer: class: Mailer arguments: ["%mailer.transport%"] newsletter_manager: class: NewsletterManager calls: - [setMailer, ["@mailer"]]
3. 3. Routing
• Déclarer des routes• Types de Endpoint• Injection de dépendances• Contrôle d’accès
3. 4. EventDispatcher
• Implémentation du pattern Mediator
3. 4. EventDispatcherCatch Event$dispatcher = new EventDispatcher();$listener = new AcmeListener();$dispatcher->addListener('foo.action', array($listener, 'onFooAction'));
Create Eventclass FilterOrderEvent extends Event{ protected $order; public function __construct(Order $order) { $this->order = $order; }
public function getOrder() { return $this->order; }}
$dispatcher = new EventDispatcher();$event = new FilterOrderEvent($order);$dispatcher->dispatch(StoreEvents::STORE_ORDER, $event);
3. 5. Twig
• Différent de PHPTemplate• Filtres Custom• Exemple– <span>{{ message | upper }}</span>
3. 4. HttpCache
• La norme HTTP 1.1 – RFC 2616• Les headers HTTP• Reverse Proxy Cache• Et les sessions ?
3. 4. HttpCache
Header renvoyé par varnishHTTP/1.1 200 OKServer: varnishContent-Type: text/html; charset=utf-8Content-Length: 15619Cache-Control: public, max-age=86400Last-Modified: Wed, 04 Dec 2013 19:13:45 +0000Expires: Sun, 11 Mar 2014 12:00:00 GMTVary: Cookie,Accept-EncodingX-Varnish-Cache: HIT
3. 4. HttpCache
Header renvoyé par apacheHTTP/1.1 200 OKServer: apacheContent-Type: text/html; charset=utf-8Content-Length: 15619Cache-Control: public, max-age=86400Last-Modified: Wed, 04 Dec 2013 19:13:45 +0000Expires: Sun, 11 Mar 2014 12:00:00 GMTVary: Cookie,Accept-Encoding
3. 4. HttpCache
• Varnish– La mise en cache– Gestion des sessions– ESI
4. Ce qui change pour les développeurs
• Arborescence du CMS• Répertoires des modules autoloadés• Routing• Hooks• Composer
4. Ce qui change pour les développeurs
• Nouvelles solutions frontend– Backbone– Underscorejs– Modernizr– Préprocesseur CSS ( LESS / SASS )
5. Module DarkJador (HelloWorld)
• Utilise les composants présentés
Conclusion