Retour

Symfony 4

11 juin 2018
4mn

Cela fait maintenant plus de 6 mois que Symfony 4 est sorti (30 novembre 2017). Le principal changement de Symfony 4 est sans aucun doute la manière d'initialiser un projet mais aussi d'ajouter des fonctionnalités.

⚠️ N'oubliez pas que Symfony 4 requiert maintenant PHP 7.1.3 minimum !

Flex

Cette nouvelle manière d'initialiser un projet Symfony utilise un nouvel outil nommé Flex. Flex est un plugin composer destiné à aider le développeur à créer des applications Symfony.

ℹ️ C'est pourquoi il remplace naturellement la Symfony standard edition mais aussi l'installeur Symfony.

Pour ce faire Flex utilise des recipes (ɹɛ.sɪ.piz). Une recipe est un fichier manifest.json qui contient différentes actions à effectuer durant l'installation d'un composant logiciel. Il permet entre autres de créer des dossiers, copier des fichiers de configuration, ajouter des variables d'environnement (.env) etc... Pour la liste complète des actions, je vous laisse consulter la documentation.

Les recipes sont stockées dans deux repository :

  • main recipes repository qui regroupe les recipes de haute qualité. Repository par défaut de Flex.
  • contrib recipes repository qui regroupe les recipes créé par la communauté, Flex demandera votre permission avant l'installation de ces recipes.

ℹ️ On voit également l'apparition du site symfony.sh qui permet de trouver des recipes.

Utilisation

Ok, nous allons maintenant voir comment initialiser un projet Symfony 4 avec Flex.

$ composer create-project symfony/website-skeleton my-project

ℹ️ La recipe symfony/skeleton est également disponible si vous souhaitez initialiser un projet plus léger. En effet elle ne requiert que :

  • symfony/console
  • symfony/flex
  • symfony/framework-bundle
  • symfony/lts
  • symfony/yaml

Normalement Flex vous aura créé la structure de dossier suivante.

assets        les fichiers ressources statics (image, js, css, ...)
bin           les executables (console, phpunit, ...)
config        les fichiers de configuration de l'application
public        les fichiers disponibles en web (front controller index.php)
src           les fichiers sources de l'application
templates     les fichiers de templating (twig, html, ...)
tests         les fichiers de tests
translations  les fichiers de traduction
var           les fichiers temporaires (cache, logs, upload, ...)
vendor        les fichiers des librairies tièrces

Pour avoir votre première page fonctionnelle :

  • crée le template dans le fichier my-project/templates/index.html.twig
{% extends 'base.html.twig' %} {% block body %}Bienvenue{% endblock %}
  • crée le controller dans le fichier my-project/src/Controller/DefaultController.php
<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Routing\Annotation\Route; class DefaultController extends Controller { /** * @Route("/", name="index") */ public function index() { return $this->render('index.html.twig'); } }

Attention, le nom des contrôleurs n'est plus suffixé de Action

Mais où sont les bundles ?

La bonne nouvelle c'est que vous n'êtes plus obligés d'avoir de bundle dans le dossier src (AppBundle). La mauvaise nouvelle c'est... heu... Ha non il n'y en a pas ! Le seul changement concernant les bundles c'est qu'il faut maintenant les enregistrer dans le fichier config/bundles.php.

<?php return [ // ... Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true], // ... ];

Conclusion

Avant Symfony 4 nous avions plusieurs choix :

  • Utiliser une distribution Symfony (standard, cmf-standard, rest ...) et/ou un microkernel.

Solution prête à l'emploi (ORM, swiftmailer, twig, ...). Mais pouvant embarquer des fonctionnalités non voulues (obligation de changer/désactiver).

  • Utiliser les composants de symfony comme des librairies tierces et/ou utilisation de Silex

Solution plus légère. Requiert une bonne connaissance des composants et librairies pour pouvoir initialiser le tout avec du cache, de la configuration.

Symfony 4 a donc été retravaillé afin que l'installation n'embarque plus de superflu. Il facilite l'ajout des fonctionnalités dont vous avez besoin selon le cycle de vie de votre projet.

Pour finir, voici mon top 3 parmi les changements de Symfony 4.0 :

  • Nouvelle structure de dossier.
  • Le LockHandlera disparu en faveur de Symfony\Component\Lock\Store\FlockStore/Symfony\Component\Lock\Store\FlockStore\SemaphoreStore
  • Le composant ClassLoader a disparu en faveur de l'autoload de composer.

PS : Je ne peux que vous conseiller de revisiter la liste des composants de Symfony, car dorénavant vous devrez soit utiliser une recipe existante soit composer votre besoin avec les composants et librairies tierces.


Articles sur le même thème

Comment créer de la dette technique dès le début d’un nouveau projet ?

Quand on arrive sur un projet existant, on doit souvent subir une dette technique qui nous fait perdre du temps et qui nous rend fou au point de vérifier qui a fait le code. Vous aussi vous voulez entrer dans la postérité lors d’un git blame et mal concevoir votre produit ?

9 août 20238mnMarianne Joseph-Géhannin

Découvrez Eleven Labs

Notre site pour mieux nous connaître

J'y vais

Contact

Eleven Labs - Paris

102, rue du Faubourg Saint Honoré

75008 Paris

Eleven Labs - Nantes

42, rue la Tour d'Auvergne

44200 Nantes

Eleven Labs - Montréal

1155, Metcalfe St Suite 1500

Montréal, QC H3B 2V6, Canada

business@eleven-labs.com

01.82.83.11.75