L'auteur présente Go-PHP-Parser, un outil permettant de parser du code PHP en Go sans dépendre de l’installation de PHP, dans le cadre de son projet AstMetrics (analyse de code via l’AST). Après avoir abandonné l’idée d’écrire un parser maison (trop complexe à maintenir face à l’évolution de PHP), il a opté pour l’intégration du moteur PHP officiel via la SAPI Embed et l’extension ext-ast, qui expose l’AST de manière stable et toujours à jour. Grâce à un bridge C/Go et à des binaires précompilés (via static-php-cli), l’outil est simple à utiliser et performant (4 000 à 8 000 fichiers/s). L’approche évite la maintenance d’une grammaire manuelle et ouvre la porte à des analyses avancées (métriques, refactoring, CI/CD, etc.). Le projet est open source et disponible sur GitHub.
Un projet astucieux pour qui veut analyser du PHP depuis Go sans dépendances externes !
L'auteur montre qu’il n’est pas nécessaire de migrer vers TypeScript pour bénéficier de sa rigueur : PHP 8.1+, couplé à des outils d’analyse statique (Psalm, PHPStan) et à des bibliothèques idiomatiques, permet d’obtenir des garanties similaires en typage, validation et maintenabilité. L’article détaille des équivalences concrètes : DTOs (classes typées + validation runtime), énumérations (PHP enums + match
), génériques (via docblocks et analyse statique), métadonnées (attributs PHP), validation (Symfony Validator), gestion des erreurs (objets Result
ou exceptions), et asynchrone (queues ou Fibers). L’approche est incrémentale, avec des exemples prêts à l’emploi, et met en avant les forces de PHP (écosystème mature, performances) tout en comblant l’écart avec TypeScript sur la sécurité et l’ergonomie. À retenir : combiner typage statique, validation aux frontières et design explicite pour un code PHP aussi robuste et maintenable qu’une base TypeScript, sans tout réécrire.
L’article présente l’utilisation de Make pour simplifier et standardiser les commandes courantes dans un projet Symfony, surtout en environnement Docker. L’auteur partage ses Makefiles personnalisés, qui permettent de lancer des tâches comme l’installation des dépendances (make composer
), l’exécution des tests (make test
), l’analyse statique (make static-analysis
), ou encore la gestion de la base de données (make db-reset
), le tout avec des paramètres optionnels pour l’environnement (env=prod
) ou des arguments supplémentaires (arg=--testdox
). Grâce à Make, les commandes Docker complexes deviennent simples et documentées (ex: make qa
pour lancer la vérification de code, l’analyse statique et les tests en une seule commande). L’article propose trois versions de Makefile : pour Docker Compose, Docker seul, et PHP natif, inspirées du projet symfony-docker. L’objectif est d’améliorer la productivité en évitant de retaper des commandes longues et en centralisant la documentation des tâches disponibles. Une solution élégante pour uniformiser les workflows entre projets Symfony.
L'article explique comment tester la documentation OpenAPI avec PHP pour garantir que le comportement d'une API correspond à sa documentation. Il propose d'intégrer la validation OpenAPI dans des tests fonctionnels en utilisant la bibliothèque league/openapi-psr7-validator
. L'approche consiste à créer une classe abstraite qui facilite la vérification des requêtes et réponses HTTP par rapport à la spécification OpenAPI. Cela permet de maintenir la cohérence entre le code et la documentation tout au long du développement, améliorant ainsi la qualité et la fiabilité de l'API.
L'article explique que PHP, traditionnellement synchrone, peut optimiser des tâches comme les requêtes SQL en les exécutant de manière asynchrone. Cela permet de lancer des opérations non bloquantes, comme des requêtes de base de données ou des lectures de fichiers, pendant que d'autres tâches sont traitées. PHP a introduit des fonctionnalités asynchrones dès la version 4.3 avec les streams, et a évolué avec les générateurs en PHP 5.5 et les fibers en PHP 8.1, permettant une meilleure gestion des coroutines. L'EventLoop est présenté comme un modèle efficace pour gérer plusieurs opérations asynchrones en utilisant des callbacks, bien que cela puisse mener à un "callback hell". Les promesses sont proposées comme solution pour simplifier la gestion asynchrone, transformant les callbacks imbriqués en une chaîne de promesses plus lisible. Enfin, l'article compare des bibliothèques comme ReactPHP et Amp pour la gestion des promesses et des coroutines, recommandant ReactPHP pour les promesses et Amp pour une approche plus naturelle avec les coroutines, tout en suggérant Revolt pour l'EventLoop.
L'auteur illustre l'évolution de PHP, de la version 3 vers la version 8, à travers les changements de style d'écriture d'une même fonctionnalité. PHP est un langage très vivant
L'article discute de l'importance des tests de mutation pour évaluer la qualité des tests logiciels, au-delà de la simple couverture de code. Les tests de mutation introduisent des défauts dans le code pour vérifier si les tests peuvent détecter ces changements, offrant ainsi un score de mutation qui indique l'efficacité des tests. L'outil Infection est présenté comme une solution pour PHP, permettant d'améliorer la confiance dans la suite de tests en identifiant les parties du code où les tests sont insuffisants.
L'abstraction, souvent perçue comme un concept réservé aux architectes, est en réalité essentielle pour tous les développeurs PHP grâce aux interfaces. Ces dernières permettent de créer un code plus propre, modulaire et flexible en définissant des méthodes sans se soucier des détails d'implémentation sous-jacents. Les interfaces agissent comme des contrats, garantissant que les classes qui les implémentent suivent une structure spécifique, ce qui réduit le couplage et augmente la flexibilité. Elles facilitent également les tests unitaires en permettant de simuler des implémentations et soutiennent les principes SOLID, essentiels pour un code maintenable et évolutif. En adoptant les interfaces, les développeurs PHP peuvent améliorer la modularité, la réutilisabilité et la maintenabilité de leur code.
Ce dépôt Github liste des intégrations de LLM dans PHP. Chaque intégration doit être open source (licence), être stable ou en développement actif et être installable via composer.
Les attributs PHP, introduits avec PHP 8.0, remplacent les annotations DocBlock par une syntaxe plus propre et officielle, utilisant des crochets. Cela améliore la lisibilité du code et facilite l'intégration avec les outils de développement. Symfony, à partir de la version 5.2, a adopté cette approche pour diverses fonctionnalités comme la définition de routes, la validation d'entités, et la gestion de la sécurité, rendant le code plus moderne et maintenable.
L'auteur explore 3 catégories de log : log depuis l'application (avec Monolog), depuis le langage de programmation (PHP) et depuis le serveur web (Nginx)
Un framework PHP pour le traitement des données (ETL)
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
3 conférences résumées :
- L’aventure d’une requête HTTP — ou le chemin de la vie des devs -> il y a tant de concepts derrière que le conférencier insiste sur la modestie à avoir et sur le fait de se reposer sur ses coéquipiers
- Et si on repensait les ORMs ? -> présentation de l'ORM Format, un concurrent de Doctrine / Eloquent basé sur d'autres concepts (très bien fait pour le DDD)
- Webhooks at scale -> Le speaker présente le concept de Circuit Breaker