Symfony 7 : Découvrez les nouveautés majeures du framework

Cette version majeure apporte plus de 450 nouvelles fonctionnalités et nécessite PHP 8.2 ou supérieur.

Command Profiler : Debuggez vos commandes

Le Command Profiler est une fonctionnalité révolutionnaire qui collecte automatiquement des informations lors de l'exécution de vos commandes. Disponible pour toutes les commandes, y compris les vôtres !

$ php bin/console --profile app:my-command

Cette fonctionnalité vous permet d'introspecter et de déboguer vos commandes personnalisées avec la même puissance que le profiler web.

📖 Documentation : Command Profiler

Request Data Mapper : Mapping automatique des données

Le Request Data Mapper révolutionne la gestion des données entrantes en mappant automatiquement les données de requête vers vos objets DTO typés et validés.

use Symfony\Component\HttpKernel\Attribute\MapRequestPayload;

class ProductApiController
{
    public function __invoke(
        #[MapRequestPayload] ProductReviewDto $review,
    ): Response {
        // Ici, $review est un objet entièrement typé et validé
        // représentant les données de la requête Symfony
    }
}

Plus besoin de mapper manuellement les données - Symfony s'en charge automatiquement !

📖 Documentation : Request Data Mapper

AssetMapper : Frontend moderne sans build

L'AssetMapper vous permet de construire un frontend de pointe en exploitant les standards web modernes comme les modules ECMAScript (ESM), les importmaps et le preloading, sans build complexe ni configuration Node.

Installation simple

$ composer require symfony/asset-mapper
$ php bin/console importmap:require js-confetti

Utilisation immédiate

// assets/app.js
import JSConfetti from 'js-confetti';

const jsConfetti = new JSConfetti();
jsConfetti.addConfetti();

C'est tout. Aucun build requis. Rafraîchissez et ça fonctionne !

📖 Documentation : AssetMapper

Entièrement typé

Symfony 7 ajoute des types PHP natifs à toutes les propriétés et valeurs de retour de méthodes. Cela améliore :

  • La gestion d'erreurs
  • Le débogage
  • L'auto-complétion dans votre IDE

Profiler redesigné

Le Profiler que vous connaissez et aimez, mais avec un look moderne et frais. Une UX et UI améliorées rendront votre expérience de débogage encore plus agréable.

📖 Documentation : Profiler

Locale switcher

Changez la locale de toute l'application avec un simple appel de méthode. Ou exécutez du code avec une locale spécifique sans affecter le reste de l'application.

📖 Documentation : Locale Switcher

Dynamic constraints

Utilisez la nouvelle contrainte When pour appliquer d'autres contraintes conditionnellement, uniquement quand l'expression donnée correspond.

📖 Documentation : Dynamic Constraints

Early Hints

Améliorez les performances perçues de vos sites web et applications en indiquant aux navigateurs quelles ressources télécharger avant même de recevoir le contenu de la réponse.

use Symfony\Component\WebLink\Link;

class HomepageController extends AbstractController
{
    #[Route("/", name: "homepage")]
    public function index(): Response
    {
        $response = $this->sendEarlyHints([
            new Link(rel: 'preconnect', href: 'https://fonts.google.com'),
            (new Link(href: '/main.css'))->withAttribute('as', 'stylesheet'),
            (new Link(href: '/app.js'))->withAttribute('as', 'script'),
        ]);

        // ...
    }
}

📖 Documentation : Early Hints

Nouveaux composants

Scheduler

Déclenchez et envoyez des messages selon un planning prédéfini.

📖 Documentation : Scheduler

Webhook et RemoteEvent

Définissez vos propres webhooks et répondez aux événements distants.

📖 Documentation : Webhook

HtmlSanitizer

Créez du code HTML sûr et conforme aux spécifications.

📖 Documentation : HtmlSanitizer

Clock

Améliorez la testabilité de votre code sensible au temps.

📖 Documentation : Clock

Attributs PHP

Des attributs PHP intégrés pour configurer les routes, le cache, la sécurité, les templates et les entités. Plus de distractions à éditer des fichiers de configuration séparés.

📖 Documentation : PHP Attributes

Access Tokens

Utilisez des tokens d'accès/bearer pour authentifier les utilisateurs dans vos APIs. Support natif pour les serveurs OpenID Connect.

📖 Documentation : Access Tokens

DatePoint

Une implémentation DateTime moderne qui corrige tous les problèmes des types natifs PHP et fournit une intégration complète avec le composant Clock.

📖 Documentation : DatePoint

Nouvelles intégrations

Intégrez avec plus de services tiers et de services de notification. Au total, Symfony fournit +100 intégrations, incluant Amazon, Microsoft et Google.

📖 Documentation : Integrations