Symfony ExpressionLanguage : Comment utiliser ce composant ?
Le composant Symfony ExpressionLanguage : qu'est-ce que c'est ? Quand et comment l'utiliser ? Comment créer des expressions lors de cas plus complexes ?
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 !
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 :
recipes
de haute qualité. Repository par défaut de Flex.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
.
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 :
my-project/templates/index.html.twig
{% extends 'base.html.twig' %}
{% block body %}Bienvenue{% endblock %}
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
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], // ... ];
Avant Symfony 4 nous avions plusieurs choix :
Solution prête à l'emploi (ORM, swiftmailer, twig, ...). Mais pouvant embarquer des fonctionnalités non voulues (obligation de changer/désactiver).
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 :
LockHandler
a disparu en faveur de Symfony\Component\Lock\Store\FlockStore
/Symfony\Component\Lock\Store\FlockStore\SemaphoreStore
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.
Auteur(s)
Anthony MOUTTE
_Développeur / Concepteur @ ElevenLabs_🚀 je suis très intéressé par la recherche et développement ainsi que les bonnes pratiques.
Vous souhaitez en savoir plus sur le sujet ?
Organisons un échange !
Notre équipe d'experts répond à toutes vos questions.
Nous contacterDécouvrez nos autres contenus dans le même thème
Le composant Symfony ExpressionLanguage : qu'est-ce que c'est ? Quand et comment l'utiliser ? Comment créer des expressions lors de cas plus complexes ?
Découvrez comment réaliser du typage générique en PHP : introduction et définition du concept, conseils et explications pas-à-pas de cas pratique.
Découvrez un cas d'usage d'intégration d'un CRM avec une application e-commerce, en asynchrone, avec Hubspot et RabbitMQ