Principaux changements depuis Symfony 3.0

Symfony 2.8 et Symfony 3.0 sont sortis il y a un peu plus d’un mois, en même temps. SensioLabs a donné une explication avec leur nouvelle procédure « Symfony Release Process » :

A new Symfony major version […] it’s released at the same time of the last minor version of the previous major version.

La nouvelle version majeure élimine toutes les parties dépréciées et propose des changements d’architecture, de dépendances, etc. tout en conservant toutes les fonctionnalités de la dernière version mineur précédente.

Et je conseille de vous mettre aux versions 3.x dès à présent, car elles intègrent beaucoup de changements.

Arborescence

app/
    autoload.php
bin/
    console
src/
    AppBundle/
        Controller/
        AppBundle.php
tests/
    AppBundle/
        Controller/
            *Test.php
var/
    cache/    #.gitkeep
    logs/     #.gitkeep
    sessions/ #.gitkeep
    bootstrap.php.cache #.gitignore
vendor/ #.gitignore
    bin/
        phpunit
composer.json
phpunit.xml.dist

Outch ! Ça va changer nos habitudes ;)

Binaires

Le fichier app/console qui devient bin/console, ça va être dur de perdre l’habitude mais ça me semble bien mieux pour la compréhension du projet.

Du coup, tous les binaires de Composer ne sont plus dans le dossier bin/ mais dans vendor/bin/. Ce qui implique que le dossier bin/ n’est plus ignoré par Git, voir la PR #772.

Séparation des données

Le dossier var/ fait son apparition ! Il va contenir les dossiers de caches (var/cache/), de logs (var/logs/) et de sessions au besoin (var/sessions/).

Les données ne sont plus stockées dans le dossier app/ ce qui est plus logique.

Par contre ils ont rajoutés des fichiers Git Keep partout, je vous raconte pas la tronche du fichier .gitignore ;)

Applicatif

AppKernel

Des nouvelles méthodes ont été incluses dans le fichier app/AppKernel.php : getRootDir, getCacheDir et getLogDir. Cela permet de se conformer à la nouvelle arborescence des dossiers, car le Kernel n’a pas été changé.

Bootstrap

Le fichier bootstrap (var/bootstrap.php.cache) n’est plus généré dans le dossier app/, mais dans le dossier var/. Il est uniquement utilisé par le front controller de production : web/app.php.

A propos de l’utilité du fichier bootstrap :

To ensure optimal flexibility and code reuse, Symfony applications leverage a variety of classes and 3rd party components. But loading all of these classes from separate files on each request can result in some overhead. To reduce this overhead, the Symfony Standard Edition provides a script to generate a so-called bootstrap file, consisting of multiple classes definitions in a single file. By including this file (which contains a copy of many of the core classes), Symfony no longer needs to include any of the source files containing those classes. This will reduce disc IO quite a bit.

If you’re using the Symfony Standard Edition, the bootstrap file is automatically rebuilt after updating the vendor libraries via the composer install command.

Syntaxe

Il faut dorénavant respecter les doubles quotes dans les fichiers de configurations YAML.

L’utilisation de pattern est remplacée par path pour définir le chemin de l’URL dans les fichiers de configuration routing.yml.

Dépendances

On passe à la version PHP >= 5.5.9, c’est déjà mieux !

AsseticBundle est tout simplement supprimé, voir la PR #860.

Tests unitaires

Les tests sont déplacés dans le dossier tests/ à la racine, au lieu de chaque dossier */Tests dans chaque bundle. Là encore, c’est vraiment plus clair !

Le fichier phpunit.xml.dist est déplacé à la racine. Personnellement je l’aurai mis dans le dossier tests/ mais je pense que c’est pour faciliter l’écriture des chemins relatifs dans son contenu.

PHPunit utilise le fichier app/autoload.php dorénavant, mais il faut définir la variable KERNEL_DIR pour que la class AppKernel soit trouvée (app/AppKernel.php).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *