Introduction
• Dépôt GitHub
– http://github.com/JeUXdiCode

• Présentation
1.
2.
3.
4.
5.

Qu’est ce que Drupal ?
Pourquoi Symfony ?
Les composants Symfony utilisés dans Drupal 8
Ce qui change pour les développeurs
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. EventDispatcher
Catch Event
$dispatcher = new EventDispatcher();
$listener = new AcmeListener();
$dispatcher->addListener('foo.action', array($listener, 'onFooAction'));
Create Event
class 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 varnish
HTTP/1.1 200 OK
Server: varnish
Content-Type: text/html; charset=utf-8
Content-Length: 15619
Cache-Control: public, max-age=86400
Last-Modified: Wed, 04 Dec 2013 19:13:45 +0000
Expires: Sun, 11 Mar 2014 12:00:00 GMT
Vary: Cookie,Accept-Encoding
X-Varnish-Cache: HIT
3. 4. HttpCache
Header renvoyé par apache
HTTP/1.1 200 OK
Server: apache
Content-Type: text/html; charset=utf-8
Content-Length: 15619
Cache-Control: public, max-age=86400
Last-Modified: Wed, 04 Dec 2013 19:13:45 +0000
Expires: Sun, 11 Mar 2014 12:00:00 GMT
Vary: 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

Drupal 8, symfony

  • 2.
    Introduction • Dépôt GitHub –http://github.com/JeUXdiCode • Présentation 1. 2. 3. 4. 5. Qu’est ce que Drupal ? Pourquoi Symfony ? Les composants Symfony utilisés dans Drupal 8 Ce qui change pour les développeurs Module DarkJador (Hello World)
  • 3.
    1. Qu’est ceque Drupal ? • • • • • • • Un CMS Version 8 Environnement technique Communauté Modules Références Utilisations
  • 4.
    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
  • 5.
    3. Les composantsSymfony utilisés dans Drupal 8 • • • • • • • HttpKernel Autoloader DependencyInjection Routing EventDispatcher Twig HttpCache
  • 6.
    3. 1. HTTPKernel • Request / Response paradigme • Event Driven • MVC
  • 7.
    3. 1. HTTPKernel
  • 8.
    3. 2. Autoloader •Norme PSR-0 – Namespace – Nommage de classe – Arborescence • Composer
  • 9.
    3. 3. DependencyInjection • class Mailer { private $transport; } public function __construct() { $this->transport = 'sendmail'; } • class Mailer { private $transport; public function __construct($transport) { $this->transport = $transport; } • }
  • 10.
    3. 3. DependencyInjection • parameters: # ... mailer.transport: sendmail services: mailer: class: Mailer arguments: ["%mailer.transport%"] newsletter_manager: class: NewsletterManager calls: - [setMailer, ["@mailer"]]
  • 11.
    3. 3. Routing • • • • Déclarerdes routes Types de Endpoint Injection de dépendances Contrôle d’accès
  • 12.
    3. 4. EventDispatcher •Implémentation du pattern Mediator
  • 13.
    3. 4. EventDispatcher CatchEvent $dispatcher = new EventDispatcher(); $listener = new AcmeListener(); $dispatcher->addListener('foo.action', array($listener, 'onFooAction')); Create Event class 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);
  • 14.
    3. 5. Twig •Différent de PHPTemplate • Filtres Custom • Exemple – <span>{{ message | upper }}</span>
  • 15.
    3. 4. HttpCache • • • • Lanorme HTTP 1.1 – RFC 2616 Les headers HTTP Reverse Proxy Cache Et les sessions ?
  • 16.
    3. 4. HttpCache Headerrenvoyé par varnish HTTP/1.1 200 OK Server: varnish Content-Type: text/html; charset=utf-8 Content-Length: 15619 Cache-Control: public, max-age=86400 Last-Modified: Wed, 04 Dec 2013 19:13:45 +0000 Expires: Sun, 11 Mar 2014 12:00:00 GMT Vary: Cookie,Accept-Encoding X-Varnish-Cache: HIT
  • 17.
    3. 4. HttpCache Headerrenvoyé par apache HTTP/1.1 200 OK Server: apache Content-Type: text/html; charset=utf-8 Content-Length: 15619 Cache-Control: public, max-age=86400 Last-Modified: Wed, 04 Dec 2013 19:13:45 +0000 Expires: Sun, 11 Mar 2014 12:00:00 GMT Vary: Cookie,Accept-Encoding
  • 18.
    3. 4. HttpCache •Varnish – La mise en cache – Gestion des sessions – ESI
  • 19.
    4. Ce quichange pour les développeurs • • • • • Arborescence du CMS Répertoires des modules autoloadés Routing Hooks Composer
  • 20.
    4. Ce quichange pour les développeurs • Nouvelles solutions frontend – Backbone – Underscorejs – Modernizr – Préprocesseur CSS ( LESS / SASS )
  • 21.
    5. Module DarkJador(HelloWorld) • Utilise les composants présentés
  • 22.