Drupal 8, symfony

409 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
409
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Drupal 8, symfony

  1. 1. 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)
  2. 2. 1. Qu’est ce que Drupal ? • • • • • • • Un CMS Version 8 Environnement technique Communauté Modules Références Utilisations
  3. 3. 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
  4. 4. 3. Les composants Symfony utilisés dans Drupal 8 • • • • • • • HttpKernel Autoloader DependencyInjection Routing EventDispatcher Twig HttpCache
  5. 5. 3. 1. HTTP Kernel • Request / Response paradigme • Event Driven • MVC
  6. 6. 3. 1. HTTP Kernel
  7. 7. 3. 2. Autoloader • Norme PSR-0 – Namespace – Nommage de classe – Arborescence • Composer
  8. 8. 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; } • }
  9. 9. 3. 3. Dependency Injection • parameters: # ... mailer.transport: sendmail services: mailer: class: Mailer arguments: ["%mailer.transport%"] newsletter_manager: class: NewsletterManager calls: - [setMailer, ["@mailer"]]
  10. 10. 3. 3. Routing • • • • Déclarer des routes Types de Endpoint Injection de dépendances Contrôle d’accès
  11. 11. 3. 4. EventDispatcher • Implémentation du pattern Mediator
  12. 12. 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);
  13. 13. 3. 5. Twig • Différent de PHPTemplate • Filtres Custom • Exemple – <span>{{ message | upper }}</span>
  14. 14. 3. 4. HttpCache • • • • La norme HTTP 1.1 – RFC 2616 Les headers HTTP Reverse Proxy Cache Et les sessions ?
  15. 15. 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
  16. 16. 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
  17. 17. 3. 4. HttpCache • Varnish – La mise en cache – Gestion des sessions – ESI
  18. 18. 4. Ce qui change pour les développeurs • • • • • Arborescence du CMS Répertoires des modules autoloadés Routing Hooks Composer
  19. 19. 4. Ce qui change pour les développeurs • Nouvelles solutions frontend – Backbone – Underscorejs – Modernizr – Préprocesseur CSS ( LESS / SASS )
  20. 20. 5. Module DarkJador (HelloWorld) • Utilise les composants présentés
  21. 21. Conclusion

×