Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quoi de neuf dans Symfony 6.1 ?

Quoi de neuf dans Symfony 6.1 ?

Durant cette présentation, nous reviendrons sur une sélection totalement subjective des contributions apportées au projet durant ces derniers mois. Ces changements vous permettrons également de (re)découvrir les processus qui encadrent l'évolution du projet Symfony. Enfin, ils seront aussi l'occasion de discuter ensemble de certaines nouveautés de PHP 8.1 et 8.2.

Thomas Calvet

May 20, 2022
Tweet

More Decks by Thomas Calvet

Other Decks in Programming

Transcript

  1. 4 types de contributions ⊚ Minor : ne change strictement

    aucun comportement ⊚ Bug : résout clairement un mauvais comportement ⊚ Feature : tout changement qui n’est pas minor ou bug ⊚ Security : cas spécial pour les releases de Sécurité 4
  2. Quel est le plan ? ⊚ Il n’y a pas

    de plan ⊚ Tout le monde peut participer ⊚ Il y a toujours un tas de problèmes à régler et d’améliorations possibles ⊚ Des idées naissent et des idées meurent 5
  3. Par contre il y a des règles ⊚ Revue de

    code et validation par la core team ⊚ La maintenabilité est capitale ⊚ De vrais cas d’utilisation, pas de la théorie ⊚ Et bien d’autres ! 6
  4. Les 6 derniers mois de contributions 7 ⊚ ~ 930

    pull requests (~ 5 par jour) ⊚ ~ 230 merged minors ⊚ ~ 320 merged bugs ⊚ ~ 130 merged features
  5. “Living on the edge” & feature freeze ⊚ Peaufinage pendant

    au moins 1 mois ⊚ Des dizaines de features sont mises en avant sur le blog à chaque nouvelle version, pensez-y ! ⊚ Cercle vertueux : PR → doc / blog → PR 8
  6. composer require php ">=8.1" ⊚ 1er bump PHP sur une

    version de Symfony mineure ⊚ Problème lié au preloading (feature PHP 7.4) ⊚ Déjà une très forte adoption de PHP 8.1 ⊚ Les types des propriétés sont de retour 9
  7. Modernisation du code 12 ⊚ Le code peut profiter des

    nouveautés PHP 8.1 ⊚ Propriétés readonly (private readonly $foo) ⊚ New in initializer (= new Foo() dans le constructeur) ⊚ Pure intersection types (Foo&Bar $var)
  8. Modernisation du code 13 ⊚ Continuation du travail déjà largement

    entamé sur Symfony 6.0 + PHP 8.0 ⊚ Toujours plus de types à ajouter ⊚ str_starts_with, str_ends_with et str_contains ⊚ Nullsafe operator ?->
  9. Aparté sur le polyfill 16 ⊚ symfony/polyfill ⊚ Backport de

    certaines features de PHP ⊚ Permet de profiter de certaines nouveautés ⊚ Tout n’est évidemment pas possible
  10. Le composant HtmlSanitizer ⊚ Assainiser du contenu HTML ⊚ Se

    protéger contre les failles XSS ⊚ Réfactorisation de tgalopin/html-sanitizer 17
  11. Pourquoi rapatrier ce projet ? ⊚ Il résout un problème

    récurrent et répandu ⊚ L’intégration avec les autres composants et symfony/ux ⊚ Pour la marque Symfony et élargir le cercle des mainteneurs 19
  12. Le service LocaleSwitcher ⊚ Pouvoir changer la locale de l’application

    instantanément partout ⊚ Tous les services taggués avec kernel.locale_aware sont concernés (en interne : les Translators & AsciiSlugger par exemple) 20
  13. Les Enums 22 ⊚ Déjà bien supportés depuis Symfony 5.4

    / 6.0 (composants Form & Serializer notamment) ⊚ Nouveauté : EnumRequirement qui permet de générer les requirements d’une Route à partir d’une \BackedEnum
  14. D’autres nouveaux ArgValueResolver ⊚ Pour les AbstractUid de symfony/uid ⊚

    Pour les \DateTime ⊚ Migration en cours : ParamConverter vers des ArgumentValueResolver 24
  15. Bundles plus faciles ⊚ Structure actuelle éprouvée mais verbeuse à

    implémenter ⊚ Moins de conventions et de boilerplate désormais ⊚ Important pour la DX ! 25
  16. Serializer ⊚ Les context builder : une fluent interface à

    la place d’un simple array ⊚ Nouveau data collector et panel dans le profiler pour traquer quels normalizer / encoder et decoder / denormalizer sont utilisés 26
  17. Dependency Injection & attributes ⊚ #[AsDecorator] Class : déclare que

    le service en décore un autre ⊚ #[MapDecorated] Param : injecte le service décoré ⊚ #[Autowire] Param : pour configurer l’autowiring au plus proche du code mais attention ! 27
  18. Plus d’intégrations pour Notifier ⊚ Composant qui abstrait l’envoi de

    “messages” (emails, SMS, Slack, etc.) ⊚ Le nombre d’intégrations disponibles continue de croître à chaque version ! 28
  19. Et tellement d’autres nouveautés ! ⊚ TagAwareAdapter (Cache) grandement amélioré

    ⊚ Des opérateurs et syntaxes supplémentaires dans le composant ExpressionLanguage ⊚ Utiliser un service directement dans la condition d’une Route 29
  20. PHP 8.2 ⊚ Supporter syntaxiquement une nouvelle version de PHP

    est un bug fix ⊚ Toutes les versions maintenues supporteront PHP 8.2 ⊚ Supporter une nouvelle feature PHP est une nouvelle feature pour Symfony (autant que possible) 30
  21. La puissance de la CI et des tests ⊚ ~

    40 000 tests unitaires et fonctionnels ⊚ Sur toutes les versions de PHP supportées et à venir ⊚ Permet de détecter et de fixer dès maintenant les dépréciations de PHP 8.2 33
  22. Symfony 6.2 ⊚ Déjà des dizaines de pull requests sur

    le milestone ⊚ Tout ce qui n’est pas prêt pour la version 6.1 est décalé automatiquement à la version 6.2 ⊚ Venez participer dès maintenant ! 34
  23. Comment aider Symfony ? ⊚ Testez les releases beta et

    RC sur vos applications ⊚ Reportez les problèmes rencontrés toujours avec un script ou un projet minimaliste les reproduisant ⊚ Programme de sponsoring 35
  24. 36 Merci ! Des questions ? ⊚ @fancyweb_ sur Twitter

    ⊚ fancyweb sur GitHub et sur le Slack Symfony