Forum PHP 2024
Accueil Blog Forum PHP 2024

Forum PHP 2024

Sylius AFUP Évènements

Jacques Bodin-Hullin
Carine Gascard
Maxime Huran
David Buros
Maxime Leclercq
Etienne Gutbub
Mathieu Santostefano

Jacques Bodin-Hullin, Carine Gascard, Maxime Huran, David Buros, Maxime Leclercq, Etienne Gutbub, Mathieu Santostefano

16 oct. 2024

Le Forum PHP 2024, organisé par l'AFUP, a réuni 27 sponsors, dont Monsieur Biz en tant que sponsor Argent, et a débuté avec des engagements forts en matière d'écologie et de responsabilité sociétale. 

L'événement, certifié argent, visait zéro déchet et une réduction de son empreinte carbone. Parmi les nouveautés, une troisième salle de conférence a été ajoutée, ainsi que le retour des ateliers. Avec 37 conférenciers sur deux jours, le programme proposait des conférences techniques variées. Une soirée communautaire a aussi été organisée à Disney Village.

Les nouveautés de PHP 8.4

La conférence sur les nouveautés de PHP 8.4 présentée par Derick RETHANS a mis en avant plusieurs améliorations clés, telles que l'Asymmetric Visibility pour mieux gérer les propriétés, les Property Hooks pour simplifier la gestion des données, et un nouveau parser HTML5. Le JIT Compiler a également été amélioré pour offrir de meilleures performances, tandis que le coût de Bcrypt a été augmenté pour renforcer la sécurité. D'autres fonctionnalités, comme la gestion des types nullables et le Grapheme String Split, ont été ajoutées pour améliorer la précision et la performance des applications.

Chez Monsieur Biz, nous basculerons vers PHP 8.4 dès que les versions de Sylius le permettront, garantissant ainsi une sécurité accrue et des performances optimales pour nos clients.

Les nouveautés dans Symfony 7.x

La conférence animée par Nicolas Grekas a présenté les évolutions récentes de Symfony. Le framework utilise un processus de versionnement rigoureux avec les versions LTS 5.4 et 6.4, et la version stable actuelle est 7.1. De nombreux contributeurs ont modifié 3 000 fichiers, ajoutant 33 000 lignes et supprimant 14 000 lignes.

Parmi les nouvelles fonctionnalités, on trouve le HTML-Sanitizer pour sécuriser les entrées, le Scheduler qui remplace Cron pour simplifier les déploiements, et l'AssetMapper pour gérer les assets JavaScript. L'injection de dépendances est facilitée grâce aux attributs, tandis que le support des UUID a été amélioré pour des performances accrues. Enfin, des mises à jour sur la sécurité incluent le stockage des tokens CSRF côté client.

Cette conférence a vraiment mis en lumière les avancées impressionnantes de Symfony et l'engagement de sa communauté !

Chez Monsieur Biz, on a hâte d’adopter Symfony 7 dès que Sylius sera prêt, pour garantir des projets à la pointe de l'innovation et de la sécurité pour nos clients. Nous restons à l'affût des évolutions pour toujours offrir le meilleur !

PMU: un plugin composer pour la gestion de monorepository

Lors de sa conférence, Antoine Bluchet, directeur technique chez Les Tilleuls, a abordé les avantages et les défis des monorepositories en PHP, en les comparant aux polyrepositories. Il a présenté divers outils tels que Mono, Monorepo-Builder et SplitSH, tout en soulignant les problématiques liées à la gestion des dépendances et à l'isolation des tests.

Antoine a également introduit PMU (PHP Monorepository Utility), un outil qu'il a conçu pour simplifier la gestion des monorepositories. PMU est spécifiquement développé pour faciliter la gestion des dépendances et des releases, avec des commandes adaptées à Composer.

Ce qui rend PMU particulièrement intéressant, c'est sa capacité à :

  • Gérer les dépendances entre projets dans un monorepo.
  • Simplifier les releases et la génération de tags pour les sous-projets.
  • Offrir une solution légère et rapide pour les développeurs PHP travaillant en monorepo.

Bien que ce projet soit encore jeune, il s'avère prometteur pour les équipes qui gèrent plusieurs projets sous un même dépôt. Chez Monsieur Biz, qui maintient plusieurs plugins Sylius, nous avons déjà envisagé de passer en monorepo. Les outils présentés par Antoine nous incitent à réévaluer cette possibilité pour optimiser la gestion de nos plugins Sylius. 🚀

De "0" à "tracing distribué" en quelques lignes de code, c'est possible !

Vincent Lepot nous a présente la mise en place en direct de tracing distribué pour débugguer et optimiser des applications PHP. Grâce à OpenTelemetry et Grafana Tempo.

Le tracing distribué est souvent négligé par rapport aux logs et aux métriques, mais il permet d'obtenir des informations cruciales sur le comportement des applications. Vincent nous montre comment, en quelques lignes de code, instrumenter une application pour capturer des traces et analyser des problèmes de performance, notamment dans une architecture distribuée.

D'abord un peu de vocabulaire. Un Span représente un bloc d'exécution, et une trace est un ensemble de spans, organisés de manière hiérarchique. Dans une trace distribuée, ces spans peuvent provenir de plusieurs processus.

Il nous détaille l'utilisation du protocole OpenTelemetry, ainsi qu'une stack comprenant Grafana Tempo pour visualiser les traces et 2 extension PHP (protobuf et opentelemetry) utiles pour les packages Composer à installer par la suite. Cette extension opentelemetry permet d'insérer des hooks avant et après des appels de méthode, facilitant ainsi la création et la gestion des spans.

​Vincent a ensuite installé quelques packages Composer issues de l'organisation OpenTelemetry pour "auto-instrumenter" une application Symfony et exporter les spans au format `otlp`.

Cette suite d'outils est utilisable aussi bien en production qu'en local, et peut être activé à la demande via une variable d'environnement pour débugguer des problèmes reproductibles. Enfin, Vincent souligne l'importance du tracing pour éviter les suppositions et observer le comportement réel des applications, ce qui permet de réagir de manière factuelle aux problèmes détectés.

Création d'Interfaces d'Administration avec Symfony UX et Sylius

Lors de sa conférence, Loïc Frémont, expert technique chez Akawaka, a partagé des bonnes pratiques pour la création d'interfaces d'administration avec Symfony UXet des composants Sylius.

Il a introduit de nouveaux packages Sylius qui améliorent l'extensibilité et la customisation des back-offices, visant à simplifier la gestion des entités et des interfaces d'administration grâce à des templates génériques, des grilles et des formulaires pour l'affichage et l'édition des données.

Voici les éléments qui ont retenu notre attention :

  • Grilles et formulaires personnalisables pour gérer les entités.
  • Live Components et Autocomplete pour dynamiser l'interface utilisateur.
  • Filtres sur les grilles pour faciliter la recherche et la gestion des données.
  • Utilisation de composants Symfony pour enrichir l'expérience développeur avec des formulaires dynamiques, notamment grâce à des traits comme LiveCollectionTrait.

Cette approche est particulièrement pertinente chez Monsieur Biz, où nous utilisons souvent Sylius pour développer des interfaces d'administration robustes et personnalisées, comme celles pour Manoir Claudine ou notre propre site web. Les outils et techniques présentés, en particulier l'utilisation de grilles, de formulaires dynamiques et de composants Symfony, pourraient améliorer notre gestion des back-offices, rendant l'administration encore plusf lexible et adaptée à nos besoins clients.


Découverte de Symfony UX et des assets mapper

La conférence animée par Félix Eymonot a mis en avant l'utilisation de Symfony UX et des assets mapper pour créer des applications plus modulaires, réactives et maintenables. En s'appuyant sur des concepts tels que Twig, l'architecture Component, et les Live Components, l'objectif principal est de simplifier l'intégration front-end. Cela permet de rendre le code des templates plus accessible tout en assurant sécurité, performance et portabilité.

Twig est présenté comme un outil essentiel pour sécuriser et optimiser les performances des templates, tout en les rendant simples et clairs. Les Twig Component permettent de découper l'application en unités autonomes et réutilisables, favorisant ainsi une meilleure modularité. Symfony UX, une initiative permettant la création de templates réutilisables orientés back-end, facilite le travail avec des composants. Les Live Components, quant à eux, ajoutent de la réactivité sans nécessiter de rechargement de page, offrant des actions en temps réel via des événements.

Chez Monsieur Biz, nous utilisons déjà ces technologies dans plusieurs de nos projets, notamment pour le site de Vincent Guerlais. Intégrés dans Sylius, ces outils nous permettent d'offrir une expérience utilisateur plus fluide et efficace. Ces innovations garantissent une meilleure modularité et réactivité dans nos solutions e-commerce.

Le grand cycle de la vie (d’une variable)

Benoit Viguier a présenté un talk sur la gestion de la mémoire en PHP. Il a expliqué comment PHP alloue et désalloue la mémoire via des mécanismes comme le Copy on Write pour optimiser les tableaux, tout en soulignant que les objets ne bénéficient pas de cette optimisation.

Il a abordé le fonctionnement du garbage collector et des outils comme gc_status pour surveiller son activité.

Benoit a également présenté des solutions comme les WeakReferences et les WeakMaps, permettant de conserver des références légères sans empêcher la destruction des objets, utiles notamment dans les systèmes de cache.​

PHP/Parallel : Accélérer sensiblement ses temps d’exécution

Thierry Kauffmann, au travers d’un retour d’expérience pour le développement de DiViM-S, nous propose de découvrir les avantages du multi-threading pour effectuer des tâches en parallèle grâce à l'extension PHP Parallel, créée par Joe Watkins (krakjoe), permet de réaliser du véritable multi-threading en PHP. Ainsi, ils ont pu ouvrir jusqu’à 100 connexions en parallèle, réduisant le temps d’exécution de 200 secondes à 2 secondes.

Les exécutions en parallèle sont avantageuses pour des calculs complexes, des appels réseaux ou des requêtes en base de données.

Nous n'avons pas encore eu l'occasion d'avoir des cas d'usage sur l'utilisation de PHP en parallèle. Cependant, nous utilisons régulièrement plusieurs workers Symfony Messenger pour gérer des traitements en asynchrone et en parallèle les messages.

Joe Watkins, auteur de cette extension et grand contributeur de la communauté PHP, est gravement malade, et si vous le pouvez, c’est le moment de l’aider !

Covariance, Contravariance et Diamant

Alexandre Daubois, expert Symfony chez Decathlon Travel, a exploré des concepts avancés tels que la covariance et la contravariance, des notions essentielles pour garantir un code solide. À travers des exemples concrets, il a démontré comment ces principes peuvent améliorer la flexibilité et la robustesse des applications.

Il a également mis en lumière le principe d'inversion de dépendance, soulignant l'importance de se fier à des interfaces plutôt qu'à des implémentations spécifiques. L'utilisation d'outils comme PHPStan pour détecter les erreurs de type avant l'exécution a été mise en avant, renforçant ainsi la qualité du code.

Un point clé de sa présentation a été le problème du diamant lié à l'héritage multiple, qui est impossible en PHP, qui peut entraîner des ambiguïtés dans le comportement des classes. Bien que les traits en PHP offrent une solution partielle à cette limitation, leur utilisation nécessite une prudence particulière pour éviter des complexités supplémentaires.

Cette conférence a rappelé l'importance des principes SOLID dans le développement de logiciels robustes et maintenables, des valeurs que l'équipe de Monsieur Biz intègre dans ses projets web pour garantir des solutions de qualité à ses clients.

Shape up, la méthode de gestion de projet revisitée chez Monsieur Biz

Jacques Bodin-Hullin a relevé le défi du lightning talk au Forum PHP : expliquer Shape-up en 5 minutes chrono. Pari réussi ! Avec humour et dynamisme, il a présenté cette méthode agile adoptée par Monsieur Biz. Fini les sprints, place aux cycles de 3 semaines où les équipes "shapent" et "buildent" des solutions innovantes. "Huguette", "Alice" et "Dave", personnages clés de la méthodologie, illustrent les différents rôles impliqués dans ce processus. Un changement radical qui offre plus de flexibilité et d'adaptabilité face aux besoins des clients et de l'agence. 

Dis Siri, mets des éléPHPants dans ma domotique

Lors de son talk au forum PHP 2024, David, développeur chez Monsieur Biz, a partagé son expérience sur la réalisation de certaines briques domotiques de sa maison en utilisant PHP.

Il a d'abord expliqué ses choix techniques pour domotiser son domicile. David a opté pour un "hub intelligent", en l'occurrence un Mac Mini équipé du logiciel open source Home Assistant. Ce dernier permet de centraliser et contrôler les dispositifs connectés de la maison, comme les micro-modules installés dans les volets roulants ou les interrupteurs, via son smartphone ou encore par des commandes vocales avec Siri.

Il a ensuite détaillé le fonctionnement de Home Assistant en prenant comme exemple un thermostat connecté. Celui-ci remonte en temps réel les données de température vers le tableau de bord de l'installation domotique, en s'appuyant sur des protocoles de communication comme Zigbee et MQTT. Zigbee est un protocole sans fil pour les objets connectés, tandis que MQTT est un protocole léger de messagerie, bien adapté pour les systèmes à faible bande passante.

Enfin, David a démontré comment il avait réussi à intégrer la lecture des données d'un compteur d’énergie, et même de son solde bancaire, grâce à un script PHP encapsulé dans un conteneur Docker. Ce script, une fois les données extraites, les envoie à Home Assistant via le protocole Zigbee, permettant ainsi un suivi précis et automatisé de ces informations essentielles dans son écosystème domotique.

Utiliser une faille de la glibc pour attaquer le moteur PHP

Charles Fol venu nous présenter la vulnérabilité CVE-2024-2961, une faille critique située dans la GLIBC, la librairie standard de Linux. Cette faille de buffer overflow permet de corrompre l'allocateur PHP et de prendre le contrôle d'un serveur à distance, sans recours aux méthodes classiques comme l’injection SQL.

Charles a expliqué deux méthodes d’exploitation : la lecture de fichiers sensibles et l’utilisation de php://filter pour manipuler des flux. Il a démontré comment un PHAR malveillant peut compromettre un serveur en exploitant des métadonnées désérialisées.

Enfin, il a illustré la découverte de cette faille via un segfault inattendu en développant un outil de filtrage, révélant ainsi une vulnérabilité vieille de 24 ans.​

Le Forum PHP, c'est l'occasion de prendre du recul sur notre métier de développeur. 

Lors de cet événement riche en enseignements, nous n'avons pas pu couvrir toutes les présentations ni résumer l'ensemble des sujets abordés, tant le programme était varié. Le mieux est vraiment de s'y rendre sur place l'année prochaine pour vivre cette expérience par soi-même et découvrir tout ce que le Forum PHP a à offrir. C'est aussi une belle occasion de se rencontrer et d'échanger avec d'autres passionnés du développement PHP ainsi qu'avec une partie de notre équipe. ☺️

À l'année prochaine !

Le Forum PHP organisé par l'AFUP a été une vraie fête pour les passionnés de développement PHP ! Avec 37 conférencier·e·s qui ont partagé des idées fraîches et pertinentes, on a vraiment eu de quoi se régaler.

Un grand shout-out à la formidable équipe de bénévoles qui a bossé dur pour que tout ça se passe sans accroc. On a déjà hâte de se retrouver lors de l'Afup Day en mai prochain à Lille, Lyon et Poitiers, sans oublier les meet-ups qui animeront notre année.

N'oubliez pas que les Appels à Propositions (CFP) sont ouverts ! C’est l’occasion parfaite pour faire entendre vos voix et enrichir le programme des futurs événements. De notre côté, chez Monsieur Biz, on s'active pour soumettre nos idées !

Merci à tous les participants et partenaires pour avoir fait de cet événement un succès. On se retrouve l'année prochaine pour encore plus de partage et d'apprentissages. Chez Monsieur Biz, on est convaincus que la collaboration et l'innovation sont les clés du développement web !

Et un immense merci à l’équipe de l’AFUP pour leur travail incroyable qui rend tout cela possible. À très bientôt !