Bien reposés de la veille, nous démarrons cette deuxième journée du Forum PHP !
Créer des UI d’admin avec Symfony UX et Sylius – Loïc Frémont
Loïc Frémont, contributeur Sylius et collègue (coucou Loïc 👋), a présenté une conférence sur la création d’interfaces d’administration (admin UI).
Son talk explore l’évolution de l’architecture Sylius et la façon dont elle peut être exploitée pour simplifier le développement d’admin UI, même en dehors du contexte e-commerce.
Un bref historique : Loïc a commencé par retracer l’histoire de Sylius, en soulignant notamment la refonte du système de grille et l’introduction des “templates génériques” pour standardiser et simplifier la création des pages d’administration. Il a ensuite expliqué comment ces templates ont évolué pour devenir les “Twig Hooks”, un système permettant une customisation avancée de l’interface.
La grande nouveauté, c’est l’arrivée de nouveaux packages permettant d’utiliser les composants clés de Sylius (Resource Bundle, Grid Bundle et Twig Hooks) dans n’importe quel projet Symfony. Fini la dépendance au “ mono-repo” e-commerce (sylius/core) ! Vous pouvez désormais profiter de Sylius pour gérer vos entités, créer des grilles de données dynamiques et personnaliser votre interface, le tout sans avoir à installer la partie e-commerce de Sylius.
Les avantages ?
Rapidité de développement : Créez des interfaces d’administration complètes rapidement.
Flexibilité et extensibilité : Customisez chaque aspect de votre interface grâce aux Twig Hooks.
Maintenance simplifiée : Profitez d’une architecture claire et modulaire.
Intégration Symfony : S’intègre parfaitement avec votre écosystème Symfony existant.
Concrètement, ça donne quoi ? Loïc a illustré ses propos avec un cas d’usage : gérer les speakers et les talks du Forum PHP. Il a montré comment créer des grilles de données, ajouter des filtres, des tris, des images, des liens, et même des champs auto-complétés, le tout avec simplicité.
Envie d’en savoir plus ? Ne manquez pas le replay de la conférence de Loïc en décembre ! Vous y découvrirez :
Comment configurer et utiliser les nouveaux packages Sylius.
Comment créer des grilles de données dynamiques et interactives.
Comment personnaliser votre interface avec les Twig Hooks.
Comment exploiter les fonctionnalités avancées de Sylius pour créer des admins UI sur mesure.
Les objets paresseux débarquent en PHP – Nicolas Grekas
Nicolas Grekas, figure de la communauté Symfony, nous parle des “Objets Paresseux”. Dans cette session, il explore le concept des “lazy objects” et comment les implémenter en PHP 8.4 et Symfony.
Lazy Loading : Optimisation et performance
Nicolas a commencé par décortiquer les différentes stratégies de “lazy loading”, en s’appuyant sur les travaux de Martin Fowler, auteur dans le domaine de l’architecture logicielle. Il a illustré chaque stratégie avec des exemples et du code, démontrant ainsi comment l’initialisation paresseuse peut améliorer les performances de vos applications.
“On n’appelle les données que si on en a vraiment besoin”
Nicolas Grekas
L’une des idées clés était de retarder l’instanciation d’objets coûteux jusqu’au moment où ils sont réellement nécessaires. Imaginez un objet qui effectue des requêtes en base de données : grâce au lazy loading, on évite de surcharger le système en ne chargeant les données que lorsqu’elles sont sollicitées.
Implémentations et cas d’usage
La présentation a ensuite exploré dans différentes implémentations possibles des objets paresseux, notamment avec des techniques de proxy et d’initialisation conditionnelle. Nicolas Grekas a notamment abordé :
L’intégration avec Symfony, en exploitant le conteneur de services pour instancier les objets au bon moment.
L’utilisation de valeurs marqueurs pour déterminer si un objet a déjà été initialisé.
Le rôle des closures dans la gestion du lazy loading.
Gérer de gros volumes de données avec PHP – Joël WURTZ
Des défis et des solutions concrètes
Joël a illustré ses propos à travers trois cas pratiques rencontrés avec son équipe :
Le traitement de données en temps réel: Pour gérer un flux de données provenant de proxies, l’équipe a opté pour une architecture en micro-services et a utilisé RabbitMQ pour gérer les messages.
La gestion des modifications de fichiers CSV volumineux: Prenant l’exemple d’un vendeur de poulet modifiant constamment son fichier de produits, Joël a expliqué comment ils ont mis en place un système de différentiel en utilisant un moteur en mémoire et en tirant parti de la commande comm.
La synchronisation de données entre applications: Face à un volume de données à synchroniser, la pagination et le traitement côté client ont été utilisés pour optimiser les appels API et réduire la charge mémoire.
Optimiser les performances de votre API avec AutoMapper – Joël Wurtz
AutoMapper : Un outil pour le mapping d’objets
Joël a commencé par présenter AutoMapper comme un outil permettant de mapper des données entre différentes représentations, notamment entre des objets et des structures génériques comme les tableaux PHP. L’objectif principal d’ AutoMapper est d’offrir des performances élevées, ce qui est crucial pour les API modernes.
Cas concret : Amélioration des performances d’API Platform
La présentation s’est appuyée sur un cas concret d’utilisation d’AutoMapper au sein d’une application développée avec API Platform. En remplaçant une partie de la sérialisation par AutoMapper, l’équipe de développement a constaté une augmentation des performances.
Joël a expliqué comment la mise en place d’AutoMapper a permis de réduire la charge sur les serveurs et d’améliorer l’expérience utilisateur globale.
Fonctionnement d’AutoMapper
La conférence a également abordé le fonctionnement interne d’AutoMapper, en expliquant comment l’outil gère les transformations d’objets et les mappings complexes. Joël a illustré ses propos avec des exemples de code et des schémas, permettant aux participants de comprendre les mécanismes sous-jacents.
Intégration avec Symfony
Un point important soulevé par Joël est l’intégration d’AutoMapper avec Symfony. Il a montré comment AutoMapper peut être facilement intégré dans un projet Symfony et comment il tire parti des fonctionnalités de ce framework pour simplifier le développement.
Castor : Le task runner PHP qui vous simplifie la vie (Forum PHP 2024)
Le Forum PHP 2024 a accueilli Grégoire Pineau, de Jolicode et Redirection.io, pour une présentation sur Castor, un task runner PHP conçu pour simplifier le développement. Si vous cherchez une alternative à Makefile, Fabric ou Invoke, ne cherchez plus !
Automatisation simplifiée
Grégoire a démontré comment Castor permet d’automatiser les tâches répétitives du quotidien d’un développeur PHP, comme l’installation et la mise à jour des vendors, l’exécution de scripts et de commandes, etc.
“L’idée c’est que vous n’ayez pas 50 000 classes à écrire. En quelques lignes de code, vous avez réussi à faire ce que vous voulez que ça fasse.”, explique-t-il.
Des fonctionnalités clés pour une meilleure DX
Castor met l’accent sur la Developer Experience (DX) en proposant :
Facilité d’écriture : des tâches définies simplement avec des fonctions PHP.
Partage de la connaissance : centralisation des commandes pour une meilleure collaboration au sein d’une équipe.
Utilitaires intégrés : fonctions pour interagir avec le système de fichiers, effectuer des requêtes HTTP, gérer des fichiers YAML, etc.
Support multiplateforme : Windows, Mac, Linux, et même des binaires statiques pour les environnements sans PHP.
Autocomplétion : pour gagner du temps et éviter les erreurs de frappe.
Gestion des contextes : pour adapter l’exécution des tâches à différents environnements (dev, prod, etc.).
Extensibilité : via un système d’événements et la possibilité d’ajouter des packages.
Et bien plus encore…
Grégoire a également présenté des fonctionnalités avancées comme le repackaging d’applications et la génération de binaires statiques, permettant de déployer des applications basées sur Castor.
Le Zéro Downtime Deployment en pratique : plus jamais de MEP à 7h du matin !
Smaïne Milianni nous a offert une présentation sur le Zero Downtime Deployment (ZDD) lors du Forum PHP 2024. Finis les déploiements nocturnes et les interruptions de service ! Smaïne, nous a guidé à travers les principes et les pièges du ZDD, illustrant ses propos par des exemples et des anecdotes.
Points clés de la présentation :
Le ZDD, une philosophie avant tout : Smaïne insiste sur l’importance d’une approche où chaque changement est pensé en termes de compatibilité ascendante et de déploiement progressif.
Gestion des schémas de base de données : Modifier une base de données en production sans interruption de service ? C’est possible ! Smaïne nous a montré comment procéder étape par étape, en ajoutant des colonnes, modifiant des contraintes, etc.
Messages asynchrones et contrats d’API : Le ZDD s’applique aussi aux architectures asynchrones. Smaïne a partagé des techniques pour faire évoluer les messages et les API sans perturber les consommateurs.
Outils et bonnes pratiques : De la librairie “ZDD Compliant” aux tests automatisés, Smaïne a présenté les outils qu’il a développés pour faciliter la mise en place du ZDD.
“Développer, c’est facile. Le plus compliqué, c’est de réfléchir à la manière de déployer son code sans interruption de service.”
Smaïne Milianni
Voilà, le Forum PHP 2024 est déjà terminé !
Rendez-vous sur la chaîne YouTube de l’AFUP pour visionner les replays de ces présentations dès décembre !
Un grand merci à tous les participants, speakers, sponsors et bénévoles qui ont fait de cet événement un moment agréable.
On se retrouve l’année prochaine pour une nouvelle édition !