Robustesse, performance et modularité : L’alliance de Drupal 8 et Symfony 2

Jeudi 12 Mai 2016

Pour améliorer la performance et la viabilité du CMS Drupal, un catalyseur est souvent nécessaire : ici,c’est Symfony2. En effet, la différence majeure entre Drupal 8 et les versions antérieures est l’intégration du Framework Symfony2 offrant la possibilité de développer ...

Symfony et Drupal 8

Pour améliorer la performance et la viabilité du CMS Drupal, un catalyseur est souvent nécessaire : ici,c’est Symfony2. En effet, la différence majeure entre Drupal 8 et les versions antérieures est l’intégration du Framework Symfony2 offrant la possibilité de développer de meilleures et plus grandes applications répondant à des besoins métiers diversifiés.

Pourquoi intégrer les composants Symfony 2 dans Drupal 8 ?

Drupal était déjà un CMS flexible et extensible grâce à plus de 6.000 modules complémentaires. Toutefois, la sortie de Drupal 8 a marqué les esprits avec l’intégration des composants de Symfony 2 et les bonnes pratiques qui manquaient jusqu’à présent telles que la programmation orientée objet, les tests unitaires qui permettent de vérifier que chaque fonction est correctement opérationnelle, la compliance HTTP, twig comme moteur template rendant le theming plus accessible, et aussi une approche en API ReST.

L’intégration des composants de Symfony 2 dans Drupal 8 n’est pas anodine, celle-ci présente de nombreux avantages dont la liste est non-exhaustive :

  • En effet, avec l’utilisation des composants de Symfony2, Drupal 8 devient entièrement orienté objet, ce qui facilite le processus pour les développeurs dans la construction de plateformes plus puissantes ;
  • Symfony fournit un core robuste et plus structuré, permettant ainsi une meilleure accessibilité et maintenance ;
  • Le Framework permet de ne solliciter que les ressources nécessaires à chaque chargement de page ce qui diminue le nombre de ressources demandées pour l’exécution d’un site web Drupal 8 ;
  • L’association des bibliothèques PHP de Symfony aux modules de Drupal permet de proposer un système de mise en cache dorénavant géré par les blocs : la gestion des contenus dynamiques est nettement améliorée.

Découvrez sans plus attendre les composants de Symfony 2 intégrés à Drupal 8 et leurs fonctions !

Les composants Symfony

  • HttpFoundation et HttpKernel : Le premier définit une couche orientée objet pour la spécification HTTP. Il fournit une abstraction pour les requêtes, les réponses, les téléchargements de fichiers, les cookies, les sessions, etc. Quant au composant HttpKernel, il fournit les briques de construction pour bâtir les Frameworks HTTP souples et performants.
  • Routing : Il permet d’associer une requête HTTP à un ensemble de variables de configuration pouvant être utilisées dans du code en utilisant les fonctions de rappel PHP. Celui-ci simplifie la définition d’URLS facilement indexables sans avoir à utiliser un fichier .htacess complexe.
  • Event Dispatcher : Il permet l’implémentation du patron de conception Médiateur d’une manière simple et efficace pour rendre les projets PHP facilement extensibles. Ce composant est intéressant pour les programmes riches en classes, car la communication entre ces dernières devient plus simple et facile.
  • YAML : YAML est un format intéressant pour la configuration. N’étant pas un langage de balises et est facilement compréhensible par l’humain pour tous les langages de programmation. Ce composant analyse des chaînes de caractères YAML afin de les convertir en tableaux PHP. Il permet aussi la conversion des tableaux PHP en chaînes de caractères YAML. Notons également que YAML peut être utilisé à la place des fichiers XML ou JSON.
  • Process : Il exécute des lignes de commande dans des sous-processus pour limiter le temps d’exécution d’un processus.
  • Serializer : Il permet la conversion des objets PHP dans un format spécifique (XML, JSON, YAML...) et vice versa.
  • Validator : Celui-ci fournit les mécanismes pour étudier n’importe quelle variable PHP. Ce composant vise à simplifier les callbacks de contrainte, utile pour la validation de données. De plus, il améliore la validation des images.
  • Translation : Il fournit les outils nécessaires pour concevoir des systèmes de rendu (Templates). Incorporé à Drupal 8, ce composant permet d’écrire le code de manière à ce que les classes puissent être réutilisées et testées unitairement.
  • Dependency Injection : Il standardise et centralise la manière dont les objets sont construits dans une application. De plus, il renforce la modularité du CMS grâce à une gestion dynamique des dépendances entre classes.
  • Classe Loader : Ce composant charge les classes du projet automatiquement si elles respectent les conventions standards de PHP.