Symfony 4, une nouvelle façon de développer des applications

Junior Gantin
3 min readNov 26, 2017

--

Symfony 4 est la nouvelle version du framework qui sera lancée le 30 Novembre prochain. Le but de cet article est de vous présenter quelques-unes des nouveautés présentes dans cette version du framework PHP.

Symfony 4, il y a quoi de nouveau?

« Symfony 4.0 = Symfony 3.0 + toutes les fonctionnalités présentes dans la version 3.x — fonctionnalités obsolètes + une nouvelle façon de développer des applications »

Symfony 4 représente une refonte complète des versions antérieures du framework.

Faites vos adieux à Symfony Installer!

Plus besoin d’installer un outil tierce pour installer et démarrer un projet Symfony. Flex et composer viendront à votre rescousse! Avec la commande ci-dessous, nous créons une nouvelle application Symfony 4.

composer create-project \
-s beta \
symfony/skeleton blog

La légèreté au programme!

C’est l’un des constats que vous ferez lors de l’installation. Symfony 4 ou plutôt Flex installe juste des paquets minimums pour “crafter” votre application. Regardons comment il fonctionne.

Référons nous au dépôt Github symfony/skeleton. Un seul fichier s’y trouve, composer.json.

{
"name": "symfony/skeleton",
"type": "project",
"license": "proprietary",
"description": "Project description",
"minimum-stability": "dev",
"require": {
"php": "^7.1.3",
"symfony/console": "^4.1",
"symfony/flex": "^1.0",
"symfony/framework-bundle": "^4.1",
"symfony/lts": "^4@dev",
"symfony/yaml": "^4.1"
},
"require-dev": {
"symfony/dotenv": "^4.1"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"scripts": {
"auto-scripts": [
],
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"id": "",
"allow-contrib": false
}
}
}

Très peu de dépendances: 6 plus exactement.

  • PHP 7: C’est la toute dernière version du langage, elle vient avec des nouveautés comme le nouvel opérateur <=>, le spaceship operator et bien d’autres.
  • Flex: Un plugin composer qui vous permet de crafter vos applications plus simplement en vous aidant à gérer vos dépendances.
  • Console: La console 😆
  • Framework-bundle, le coeur du framework Symfony
  • lts pour le support des composants Symfony et yaml pour les configurations

La structure d’une application Symfony 4

C’est une toute nouvelle structure que nous propose Symfony 4, proche de celle de Laravel.

  • un fichier de configuration .env
  • le dossier www/ renommé en public/
  • le dossier config/ est toujours présent mais les fichiers de configurations sont minimales
  • le dossier bin/ contient l’utilitaire console

Symfony est léger d’accord! Mais comment je me débrouille pour installer des bundles?

Le but avec Symfony 4 c’ est de garder une structure assez légère afin de réduire la complexité des applications. Votre code devient “Bundleless”, sans besoins de “Bundles”. Vous êtes libres d’organiser votre code dans le dossier ‘src/’. Cela ne veut pas pour autant dire que vous les bundles sont obsolètes. Les “bundles” que vous utilisez habituellement seront disponibles pour mettre en place des fonctionnalités dans votre application, mais juste que vous n’êtes pas obligé d’en créer dans votre application.

Symfony 4 introduit les recipes (recettes), une suite de ligne de commandes à exécuter lors de l’installation des bundles. Deux dépôts regroupent les recettes (recipes) pour installer des paquets tiers: https://github.com/symfony/recipes et https://github.com/symfony/recipes-contrib pour la communauté.

Plus de 150 recettes existent déjà: api-platform, graphql-bundle, etc… L’installation d’un bundle devient plus simple.

composer req admin

Webpack Encore, API Platform, etc

Symfony 4 s’est donné les armes necessaires afin de faciliter la création d’applications de tous types: microservices, API, monolithes, etc. Juste un pur bonheur.

Contribuez à la communauté

Pour pouvoir faire adopter cette nouvelle version de Symfony, il faudrait faire migrer les bundles Symfony existants vers la nouvelle version 👷, contribuer à la créations des recettes, …

Happy Symfony 4!

--

--

Junior Gantin

Luck is what happens when preparation meets opportunity.