Vers une refonte totale de Drupal 8 avec Symfony 2 ?

Vers une refonte totale de Drupal 8 avec Symfony 2 ?

Drupal 8 intègre désormais des composants de Symfony 2 dans son noyau. Cependant, il ne s'agit pas d'une refonte de Drupal en Symfony. Pourquoi ?

A l'heure où j'écris cet article, il s'agit uniquement de l'intégration de 2 composants de Symfony 2, HttpFundation et ClassLoader.  Mais à quoi vont servir ces classes ?

 

Amélioration des performances de Drupal 8

Grâce aux composants de Symfony 2, une amélioration des performances est à prévoir dans Drupal 8.

HttpFoundation

Le composant HttpFoundation défini une couche d'abstraction PHP optimisée pour les spécifications des requêtes HTTP 1.1. 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 ...

On peut par exemple imaginer une refactorisation basique de la fonction drupal_http_request() dans Drupal 8 :

<?php
// Implémentation drupal_http_request() Drupal 8 avec un composant Symfony 2

use Symfony\Component\HttpFoundation\Request;

function drupal_http_request($url, array $options = array()) {
  $result = Request::create($url, $options['method'], $options['data']);
  return $result;
}

 

ClassLoader

Le composant ClassLoader permettra de charger uniquement  les objets dont on aura besoin dans une page Drupal. Par conséquent, il n'y aura pas d'inclusion de fichiers inutils. Cela permettra d'optimiser le temps de chargement 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.

 

D'autres composants seront-ils intégrés ?

Oui certainement, car les discussions autour du sujet laissent à penser que d'autres composants seront certainement  intégrés. Par ailleurs, il ne s'agit pas uniquement de l'intégration de Symfony 2, on parle aussi de l'intégration de composants de ZendFramwork et bien d'autres.

 

Pourquoi le choix de Symfony 2 ?

Le choix de Symfony  est tout désigné car d'une part c'est un des meilleurs framework PHP à l'heure actuelle et d'autre part les principaux contributeurs de la communauté Drupal préfèrent utiliser des solutions existantes qui ont déjà fait leurs preuves au lieu de réinventer la roue.

De plus, dans Symfony 2, les composants sont indépendants 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.

 

Conclusion

Nous avons vu que Drupal 8 intègre désormais des composants de Symfony 2 et que ces choix sont motivés par la volonté des leaders de Drupal de refactorer Drupal 8 avec du code existant.

En effet, le but étant de faire évoluer le code vieillissant en ne réinventant pas la roue.  Mais aussi, d'accroitre les performances de Drupal 8.

Je pense qu'il y aura sans doute l'inclusion d'autres composants Symfony 2. Cependant, au regard des discussions sur le sujet il y a de forte chance de voir l'inclusion d'autres composants provenant d'autres Framework PHP.

 

A votre tour 

Que pensez-vous de l'avenir de Drupal 8 ?

 

 

0

Dites ce que vous pensez, laissez un commentaire !