Drupal 8 intègre desormais des composants de Symfony 2 à savoir HttpFundation et ClassLoader. Pour comprendre le pourquoi de ce choix, nous allons nous interesser au fonctionnement de ces deux composants.
HttpFundation
Ce composant permet de définir une couche d'abstration PHP optimisée pour les spécifications des requêtes HTTP, cette abstraction n'existe pas par défaut dans PHP. De cette façon, on pourra manipuler aisément toutes les composantes d'une requête HTTP 1.1 : $_GET, $_POST, $_FILE, $_COOKIE, $_SESSION etc.
Cette brique plus importante des deux, permettra de faire des tests unitaires dans le corps de Drupal et de générer plusieurs requêtes dans un même processus. " Lorsqu'une page d'accueil très statique d'un site contient un bloc dynamique avec des tweets, l'ensemble peut être mis en cache à l'exception des tweets, par exemple, pour ne rafraîchir que cette partie.
ClassLoader
Ce composant permettra de charger uniquement les objets dont on aura besoin dans la page Drupal. Par conséquent il n'y aura pas d'inclusion de fichiers unitils. Cela permettra d'optimiser le temps de chergement des pages.
De plus, avec le système des APC introduit dans la version 5.1.0 de PHP, utilisé par la classe ApcUniversalClassLoader de Symfony 2, Drupal 8 gagnera d'avantage en performance car les informations pourront être mises en cache dans la mémoire.
Grâce à ces composants de Symfony 2, une amélioration des performances est à prévoir dans Drupal 8.
Le choix du framework Symfony s'explique par le fait que les leaders de Drupal de refractorer Drupal 8 avec du code existant. En effet le but est de faire évaluer le code vieillissant en ne réinventant pas la roue; mais aussi d'accroitre les persformations de Drupal 8.
Symfony fait partie des meilleurs framework PHP à l'heure actuelle et que les principaux contributeurs de la communauté Drupal préfèrent utiliser des solutions existantes qui ont déjà fait leurs preuves. En plus de cela, dans Symfony 2, les composants sont indépendant les uns des autres. Par conséquent, tout ou partie des composants peuvent être utilisés dans d'autres projets sans pour autant utiliser le framework Symfony 2.