# Accueil

> Blog technique sur Symfony et PHP : tutoriels, retours d'expérience et réflexions d'un développeur passionné par le code propre et l'écosystème web moderne.

URL canonique : https://lecodeestdanslepre.fr/
Auteur : Pierre
Langue : fr-FR
Publication : 2026-02-01T19:43:12Z
Modification : 2026-09-18T09:29:50Z

Ce blog est mon coin personnel pour partager, réflexions, expériences, coups de cœur ou coups de gueule autour de Symfony et PHP — bref, tout ce qui fait le sel (et parfois les larmes) du quotidien d'un développeur.

## Articles

- [Homebrew, Docker, nvm, worktrees : une seule commande pour tout nettoyer](https://lecodeestdanslepre.fr/billets/homebrew-docker-nvm-worktrees-une-seule-commande-pour-tout-nettoyer/): Ma fonction Zsh update : topgrade, Homebrew, Docker, nvm et les worktrees Claude Code sous une seule commande, avec un bilan d'espace en Go.
- [La QA, c'est quoi ? Demandez aux 8,5 millions d'écrans bleus](https://lecodeestdanslepre.fr/billets/qa-qualite-logicielle/): Écrans bleus CrowdStrike, panne Cloudflare, scandale Horizon : ce que coûte une QA absente, et la carte des outils qui protègent un projet web.
- [Pest 5 : la migration qui a fait avouer ma suite verte](https://lecodeestdanslepre.fr/billets/pest-migration-tests/): Migration Pest 5 sur un blog Symfony : extensions PHPStan jamais chargées, Xdebug fantôme, gate divisé par 50. Ce qu'une suite verte peut cacher.
- [Les agents IA qui piratent tout seuls : accident isolé ou début de série ?](https://lecodeestdanslepre.fr/billets/agents-ia-qui-piratent-tout-seuls/): Configuration réseau défaillante, et non une IA folle, est la cause de la compromission de systèmes externes par des agents d'IA, révèle cette analyse.
- [Cisco FMC : un mot de passe codé en dur, en 2026, dans un pare-feu d'entreprise](https://lecodeestdanslepre.fr/billets/cisco-fmc-mot-de-passe-code-en-dur/): Un mot de passe codé en dur dans Cisco Secure FMC, exploité avant correctif : mécanisme, chaînage, et comment tenir les secrets hors du code web.
- [Symfony 8.2 : des URLs signées à usage unique, sans stockage](https://lecodeestdanslepre.fr/billets/urls-signees-usage-unique-symfony-8-2/): Symfony 8.2 ajoute l'usage unique aux URLs signées d'UriSigner via un jeton d'état replié dans le HMAC. Mécanisme, limites et comparaison avec login_link.
- [Twig 3.28 : le sandbox arrête de tout emballer, les macros redeviennent dynamiques](https://lecodeestdanslepre.fr/billets/twig-3-28-sandbox-macros-dynamiques/): Découvrez les nouveautés de Twig 3.28 : le retour des macros dynamiques grâce à l'opérateur point et un sandbox plus performant. Auditez vos extensions Twig.
- [Le SEO tué par l'IA ? Les chiffres ne mesurent pas la même chose](https://lecodeestdanslepre.fr/billets/seo-ia-guerre-des-chiffres/): Zéro-clic, AI Overviews : ces chiffres ne mesurent pas la même chose. Comment lire leur périmètre, et mesurer la dépendance réelle de votre site à Google.
- [Une timeline et un bouton « Copy as text » : la page d'exception Symfony se redessine](https://lecodeestdanslepre.fr/billets/page-exception-symfony-redesign-copy-as-text/): La page d'exception Symfony se réinvente avec une timeline cliquable et un bouton « Copy as text » pour faciliter le debug avec les IA. Analyse des changements.
- [Les macros Twig : des fonctions qui ne voient rien](https://lecodeestdanslepre.fr/billets/macros-twig/): Les macros Twig dans Symfony : syntaxe, import, portée et bug invisible. Ce billet explore leurs limites et quand les remplacer par des Twig Components.
- [Un RAG sur son propre blog : pour me relire, pas pour écrire](https://lecodeestdanslepre.fr/billets/rag-editorial-relire-corpus/): Monter un RAG sur son blog pour vérifier ses écrits. Découvrez le montage canonique et décomposé de Symfony AI pour chercher avant de générer vos contenus.
- [Cyber Resilience Act : mainteneur, steward ou simple passant ?](https://lecodeestdanslepre.fr/billets/cyber-resilience-act-mainteneur-steward-dev-php/): Le 11 septembre 2026, les obligations de signalement du CRA s'activent. Fabricant, steward ou hors champ : ce qui tombe (ou pas) sur un dev PHP.
- [L'affiche avant le film : des images OG dessinées en PHP, sans Chromium](https://lecodeestdanslepre.fr/billets/images-og-dessinees-en-php/): Générez des images OG personnalisées en PHP avec GD et Imagick, sans Chromium ni IA. Apprenez le processus complet incluant Glide et la gestion des caches.
- [JSON-LD et schema.org : baliser pour l'ère des agents](https://lecodeestdanslepre.fr/billets/json-ld-ere-agentique/): Décryptage du JSON-LD et Schema.org en 2026 : comment baliser pour les agents IA et ce qui ne sert plus à rien dans votre structuration de données.
- [Le backup de Schrödinger : rejouer son pg_dump avant d'en avoir besoin](https://lecodeestdanslepre.fr/billets/backup-schrodinger-restaurer-pg-dump/): Votre pg_dump tourne mais savez-vous le restaurer ? Mesurez votre RTO avec un exercice concret et répété. Évitez le cas du backup qui ne marche jamais.
- [EasyAdmin : sécuriser un admin sans toucher à setPermission()](https://lecodeestdanslepre.fr/billets/easyadmin-securiser-un-admin-sans-toucher-a-setpermission/): Comment sécuriser une interface EasyAdmin avec Symfony sans toucher à setPermission(). Aperçu des couches access_control, #[IsGranted] et gardes métier.
- [EasyAdmin : écrire un filtre custom du FilterInterface au FilterType](https://lecodeestdanslepre.fr/billets/easyadmin-ecrire-un-filtre-custom-du-filterinterface-au-filtertype/): Filtres custom Symfony : créez vos filtres pour EasyAdmin 5 avec FilterInterface et FilterType. Idéal pour des besoins spécifiques comme la date de mise en avant.
- [Doctrine sous EXPLAIN : profiler ce blog jusqu'à l'index](https://lecodeestdanslepre.fr/billets/doctrine-postgresql-explain-n-plus-1/): Profiler un blog Symfony réel : requêtes comptées au profiler Doctrine, plans lus sous EXPLAIN ANALYZE, index vérifiés dans pg_stat_user_indexes en prod.
- [WebMCP : exposer un site aux agents](https://lecodeestdanslepre.fr/billets/webmcp-symfony-stimulus/): WebMCP permet aux agents de consulter votre site avec des actions typées. Découvrez comment exposer une page Symfony à un agent avec ce draft W3C.
- [Mesurer le trafic IA dans ses logs](https://lecodeestdanslepre.fr/billets/mesurer-trafic-ia-logs-crawlers/): 13,5 jours de logs Caddy analysés : qui crawle un blog PHP, ce que pèsent GPTBot et ClaudeBot, et ce que vaut un robots.txt écrit sans mesure.
- [La release qui ne comptait plus](https://lecodeestdanslepre.fr/billets/release-automatisee-git-cliff-github-actions/): Automatisez vos releases de 0 à 1 avec Conventional Commits, git-cliff et SemVer. Simplifiez votre workflow DevOps pour un déploiement d'application.
- [Core Web Vitals : mécanique de mesure et pièges à éviter](https://lecodeestdanslepre.fr/billets/core-web-vitals-mecanique-pieges/): D'où viennent les chiffres des Core Web Vitals : ce que CrUX voit (et rate), pourquoi Lighthouse ne prédit rien, et les pièges LCP, INP, CLS à éviter.
- [AI Overviews arrive en France : faut-il vraiment optimiser ?](https://lecodeestdanslepre.fr/billets/optimiser-pour-les-ia-qui-repondent/): Google AI Overviews arrive en France. Faut-il optimiser votre stratégie SEO pour être cité ? Décryptage des enjeux et des réglages techniques.
- [Créer un serveur MCP avec Symfony](https://lecodeestdanslepre.fr/billets/symfony-mcp/): Configurez un serveur MCP sous Symfony pour exposer vos outils à des agents IA. Apprenez la configuration, les attributs, et évitez les pièges.
- [Symfony 8.1 HTTP-less : pour un projet neuf, pas pour un worker existant](https://lecodeestdanslepre.fr/billets/symfony-8-1-http-less-pour-un-projet-neuf-pas-pour-un-worker-existant/): Le kernel HTTP-less de Symfony 8.1 sert un projet neuf, pas à alléger un worker existant. ServicesBundle, ConsoleBundle, RequiredBundle : pour quel cas.
- [Igor PHP : voir ce que PHPStan ne voit pas en worker mode](https://lecodeestdanslepre.fr/billets/igor-php-worker-mode/): Igor PHP repère les fuites d'état que PHPStan ne voit pas en FrankenPHP worker mode. Premier scan de ce blog : 269 findings bruts, 3 vrais bugs.
- [Vibe coding : le crash dont vous êtes le héros](https://lecodeestdanslepre.fr/billets/vibe-coding-erreur-ia/): Un vendredi, un assistant un peu trop serviable, et deux jauges qui ne disent pas la même chose. Une partie de vibe coding dont vous êtes le héros.
- [L'IA générative joue-t-elle au magicien d'Oz ?](https://lecodeestdanslepre.fr/billets/ia-generative-magicien-oz/): L'IA générative livre-t-elle des miracles ou cache-t-elle des opérateurs ? Cet article décortique la réalité des avancées d'AlphaFold, GenCast, Copilot et les illusions marketing.
- [La sobriété, c'est un métier du « ne pas »](https://lecodeestdanslepre.fr/billets/sobriete-numerique-developpeur/): L'empreinte numérique des développeurs est-elle problématique ? Découvrez les 3 leviers d'action concrets pour une écoconception logicielle efficace et souvent gratuite.
- [Vibe coding : le garde-fou n'est pas là où on l'a mis](https://lecodeestdanslepre.fr/billets/vibe-coding-garde-fou/): Trois ratés d'IA en 2025-2026 (BMW, Starbucks, boutique) montrent que le code est bon, mais la délégation de décision en production manque de garde-fou humain.
- [Une IA a trouvé les failles que ma QA ne voyait plus](https://lecodeestdanslepre.fr/billets/une-ia-a-trouve-les-failles-que-ma-qa-ne-voyait-plus/): Une IA a détecté des failles de sécurité critiques (IDOR, exécution de code arbitraire) dans une application Symfony, là où la QA humaine ne voyait plus rien. Comment ce piège fonctionne.
- [EasyAdmin : quand un seul trait configure trois CRUDs](https://lecodeestdanslepre.fr/billets/easyadmin-quand-un-seul-trait-configure-quatre-cruds/): Simplifiez vos CRUDs Symfony avec EasyAdmin. Utilisez un trait pour partager des champs communs entre entités et améliorez la maintenance de votre code.
- [FrankenPHP en dev : un worker chaud, trois --watch empilés, et un cert qui ne demande rien](https://lecodeestdanslepre.fr/billets/frankenphp-en-dev-un-worker-chaud-trois-watch-empiles-et-un-cert-qui-ne-demande-rien/): FrankenPHP : 3 hot reloads empilés (worker, Tailwind, PHP) dans un binaire avec Caddy et HTTPS natif. Développement sans configuration complexe.
- [jakzal/phpqa : sortir la QA Symfony de son vendor/](https://lecodeestdanslepre.fr/billets/jakzal-phpqa-sortir-la-qa-symfony-de-son-vendor/): Exclure les outils de QA Symfony (PHPStan, Rector, CS-Fixer) du vendor Composer grâce à jakzal/phpqa et Docker. Reproduisez votre environnement.
- [Symfony 8.1 : vos Commands passent en mode Controller](https://lecodeestdanslepre.fr/billets/symfony-8-1-vos-commands-passent-en-mode-controller/): Symfony 8.1 intègre les value resolvers Doctrine (MapEntity, Uid, DateTime) pour vos commands. Simplifiez vos signatures __invoke() comme en Controller.
- [FrankenPHP en prod : un binaire, quatre sous-domaines, un seul worker](https://lecodeestdanslepre.fr/billets/frankenphp-en-prod-un-binaire-quatre-sous-domaines-un-seul-worker/): FrankenPHP intègre Caddy pour remplacer Nginx et PHP-FPM. Nous démontons la stack Docker pour servir 4 sous-domaines avec un worker Symfony.
- [Symfony Scheduler en prod : j'ai attendu d'avoir Redis pour migrer, et j'ai bien fait](https://lecodeestdanslepre.fr/billets/symfony-scheduler-en-prod-j-ai-attendu-d-avoir-redis-pour-migrer-et-j-ai-bien-fait/): Migration de Cron vers Symfony Scheduler : 3 briques essentielles (worker Messenger, Redis, transport async) pour une exécution fiable en production.
- [EasyAdmin : son premier CrudController](https://lecodeestdanslepre.fr/billets/easyadmin-son-premier-crudcontroller/): Dès votre premier CrudController avec EasyAdmin et Symfony, prenez les bonnes habitudes. Cet article détaille la création sur l'entité simple RedirectRule.
- [PHP 8.6 : ce qui est acté, ce qui se joue encore](https://lecodeestdanslepre.fr/billets/php-8-6-ce-qui-est-dans-le-pot-ce-qui-se-joue-encore/): Découvrez ce qui est confirmé et ce qui se joue encore pour PHP 8.6 : analyse complète des nouvelles fonctionnalités et RFC en cours de vote.
- [CrowdSec : la défense réseau communautaire expliquée](https://lecodeestdanslepre.fr/billets/crowdsec-la-defense-reseau-communautaire-expliquee/): CrowdSec est une défense réseau communautaire : les bans sont partagés et validés collectivement. Découvrez sa mécanique et comment il surpasse les limites de Fail2ban.
- [EasyAdmin : construire un menu admin qui tient la route](https://lecodeestdanslepre.fr/billets/easyadmin-construire-un-menu-admin-qui-tient-la-route/): Un menu EasyAdmin qui tient la route : configureMenuItems(), MenuItem, rôles et sections pour un back-office Symfony navigable. Retour d'expérience complet.
- [Une boucle for contre 11,7 millions de Français : autopsie d'une faille IDOR](https://lecodeestdanslepre.fr/billets/une-boucle-for-contre-11-7-millions-de-francais-autopsie-d-une-faille-idor/): Décryptage de la faille IDOR qui a exposé 11,7 millions de comptes ANTS en 2026. Apprenez comment Symfony prévient ce type de vulnérabilité.
- [Symfony AI Mate : un troisième port d'entrée pour votre app Symfony](https://lecodeestdanslepre.fr/billets/symfony-ai-mate-un-troisieme-port-d-entree-pour-votre-app-symfony/): Symfony AI Mate ajoute un port JSON-RPC à votre app Symfony, exposant votre container DI et services aux agents via stdio. Installation en 3 lignes.
- [C'est parti pour installer EasyAdmin](https://lecodeestdanslepre.fr/billets/c-est-parti-pour-installer-easyadmin/): EasyAdmin Symfony est la solution idéale pour un back-office léger. Installez-le rapidement en suivant ce guide et gérez efficacement vos entités Doctrine.
- [Héritage Doctrine : la troisième porte que personne ne montre](https://lecodeestdanslepre.fr/billets/heritage-doctrine-la-troisieme-porte-que-personne-ne-montre/): Doctrine présente 3 stratégies d'héritage ORM : STI, CTI et Mapped Superclass. Découvrez cette 3e option souvent oubliée pour vos entités complexes.
- [Fibers PHP : anatomie d'une primitive mal aimée](https://lecodeestdanslepre.fr/billets/fibers-php-anatomie-d-une-primitive-mal-aimee/): Les Fibers PHP, bien que peu utilisées directement, sont le moteur des bibliothèques async modernes comme Amphp. Découvrez leur fonctionnement bas niveau.
- [Générer son SEO avec Symfony AI et Gemini](https://lecodeestdanslepre.fr/billets/generer-son-seo-avec-symfony-ai-et-gemini/): Intégrez la génération SEO automatique avec Google Gemini via Symfony AI dans votre administration EasyAdmin. Optimisez vos métadonnées facilement.
- [Redirections HTTP avec Symfony : de la règle au nettoyage mensuel](https://lecodeestdanslepre.fr/billets/construire-un-systeme-de-redirections-http-complet-avec-symfony/): Redirections HTTP avec Symfony : entité RedirectRule, listener kernel.request, cache Redis, validation anti-ReDoS, création automatique au changement de slug et purge mensuelle.
- [Recommandations de contenu avec Meilisearch](https://lecodeestdanslepre.fr/billets/recommandations-de-contenu-avec-meilisearch/): Meilisearch appelle lui-même le fournisseur d'embeddings au push. Ce que ça change, ce que /similar sait faire, et pourquoi il faut quand même un repli.
- [Comment j'ai transformé EasyAdmin en tableur intelligent](https://lecodeestdanslepre.fr/billets/comment-j-ai-transforme-easyadmin-en-tableur-intelligent/): Transformez EasyAdmin en tableur intelligent ! Six décisions UX ciblées améliorent votre quotidien sans code ni outils externes. Découvrez comment.
- [Les délimiteurs Twig : ce problème d'espace blanc que vous ignorez](https://lecodeestdanslepre.fr/billets/les-delimiteurs-twig-le-probleme-d-espace-blanc-que-personne-ne-maitrise-vraiment/): Les délimiteurs Twig ({% %}, {{ }}, {# #}) génèrent des espaces blancs inattendus. Découvrez comment les maîtriser pour un code source HTML stable et léger.
- [PHP 8.4 : rattrapage de retard ou véritable modernisation ?](https://lecodeestdanslepre.fr/billets/php-8-4-rattrapage-modernisation/): PHP 8.4 introduit les property hooks, la visibilité asymétrique, et des fonctions de tableau. Analyse de leur adoption et impact réel sur les projets.
- [PHP 8.5 : pipe operator et nouvelles fonctionnalités](https://lecodeestdanslepre.fr/billets/php-8-5-pipe-operator-et-nouvelles-fonctionnalites/): PHP 8.5 introduit le pipe operator, array_first(), array_last() et l'attribut NoDiscard. Découvrez les nouveautés qui modernisent le langage.
- [PHP 8.3 : typage renforcé et nouvelles fonctionnalités](https://lecodeestdanslepre.fr/billets/php-8-3-le-renforcement-du-typage-renforce-et-coherence-du-langage/): PHP 8.3 améliore la rigueur avec le typage des constantes et json_validate(). Découvrez ces nouveautés pour sécuriser et optimiser votre code PHP.
- [PHP 8.2 : la consolidation du système de types et modernisation de l’API](https://lecodeestdanslepre.fr/billets/php-8-2-readonly-classes/): PHP 8.2 a introduit les classes readonly, une avancée majeure pour la consolidation du typage en PHP. Découvrez son impact sur la fiabilité des applications.
- [Comment tailwind_merge résout les conflits de classes dans Twig](https://lecodeestdanslepre.fr/billets/comment-tailwind-merge-resout-les-conflits-de-classes-dans-twig/): Le filtre tailwind_merge résout les conflits de classes Tailwind CSS dans Twig, simplifiant le développement de vos composants réutilisables.
- [PHP 8.1 : l’expression après la révolution](https://lecodeestdanslepre.fr/billets/php-8-1-readonly-impact/): Découvrez comment 'readonly' de PHP 8.1 renforce les architectures PHP modernes, malgré la fin de sa maintenance. Un outil essentiel pour la robustesse.
- [PHP 8.0 : la révolution qui a tout changé](https://lecodeestdanslepre.fr/billets/php-8-0-attributs-proprietes-promues/): PHP 8 : les attributs et propriétés promues ont révolutionné le code. Analyse des vrais impacts cinq ans plus tard sur le développement PHP.
- [Ce qui se passe entre la barre de recherche et l'index](https://lecodeestdanslepre.fr/billets/meilisearch-l-art-de-la-recherche-instantanee/): De la frappe au résultat : LiveComponent, index Meilisearch, indexation asynchrone et tokenisation. La chaîne réelle d'une recherche sur ce blog.
- [OWASP ZAP : comment implémenter un audit DAST automatisé avec Symfony et Docker](https://lecodeestdanslepre.fr/billets/owasp-zap-comment-implementer-un-audit-dast-automatise-avec-symfony-et-docker/): Auditez la sécurité de votre application Symfony avec OWASP ZAP, Docker et le réseau. Apprenez à automatiser vos scans pour des tests reproductibles.
- [Le FOUC n'est pas un bug graphique, c'est une faille d'architecture !](https://lecodeestdanslepre.fr/billets/le-fouc-n-est-pas-un-bug-graphique-c-est-une-faille-d-architecture/): Le FOUC n'est pas un bug visuel, mais une faille d'architecture frontend qui brise la confiance utilisateur et pénalise votre SEO. Éradiquez-le.
- [Symfony UX Icons : 200 000 icônes SVG sans CDN, sans sprite, sans prise de tête](https://lecodeestdanslepre.fr/billets/symfony-ux-icons-200-000-icones-svg-sans-cdn-sans-sprite-sans-prise-de-tete/): Symfony UX Icons intègre 200 000+ icônes SVG via Iconify, sans CDN ni sprite. Installation et usage en une ligne Twig pour une UX sans prise de tête.
- [Symfony UX Toolkit : quand le frontend devient (enfin) un plaisir](https://lecodeestdanslepre.fr/billets/symfony-ux-toolkit-quand-le-frontend-devient-enfin-un-plaisir/): Symfony UX Toolkit révolutionne la DX avec des composants UI inspirés de shadcn/ui. Maîtrisez vos vues Twig et Stimulus pour un frontend enfin agréable.
- [Castor : un task runner en PHP pour les projets Symfony](https://lecodeestdanslepre.fr/billets/castor-un-task-runner-en-php-pour-les-projets-symfony/): Tutoriel Castor : installer le binaire, écrire ses tâches, organiser .castor/, paralléliser la QA et migrer un Makefile sans casser ses hooks git.
- [Comment FrankenPHP a relégué PHP-FPM et Nginx au stade de reliques](https://lecodeestdanslepre.fr/billets/comment-frankenphp-a-relegue-php-fpm-et-nginx-au-stade-de-reliques/): FrankenPHP avec Docker optimise votre stack DevOps : remplacez Nginx et PHP-FPM pour une architecture prod, parité dev/prod et performances accrues.
- [AssetMapper : le frontend de Symfony sans Node ni bundler](https://lecodeestdanslepre.fr/billets/assetmapper-le-frontend-pour-ceux-qui-detestent-vraiment-le-frontend/): AssetMapper Symfony sert le frontend sans Node ni bundler : import maps natives, importmap.php et zéro build. Le composant qui fait tourner ce blog.
- [Live Components : JavaScript, moi non plus](https://lecodeestdanslepre.fr/billets/live-components-javascript-moi-non-plus/): Les Live Components Symfony rendent une interface réactive sans écrire de JavaScript : re-rendu serveur via AJAX, data-model et LiveProps, en Twig.
- [Twig Components : la puissance du Backend dans le Frontend](https://lecodeestdanslepre.fr/billets/twig-components-la-puissance-du-backend-dans-le-frontend/): Les Twig Components remplacent macros Twig et includes : classes PHP typées, props et logique encapsulée. La brique de base des interfaces Symfony UX.
- [PHP 8.4 Property Hooks : quand Doctrine 3.4 dépoussière vos getters/setters](https://lecodeestdanslepre.fr/billets/php-8-4-property-hooks-quand-doctrine-3-4-revolutionne-vos-getters-setters/): Les property hooks de PHP 8.4 remplacent getters et setters : get/set portés par la propriété, entités plus courtes, support Doctrine enfin utilisable.
- [Sécurité & 2FA : la forteresse numérique](https://lecodeestdanslepre.fr/billets/securite-2fa-la-forteresse-numerique/): Sécurisez votre application Symfony avec la double authentification 2FA grâce à SchebTwoFactorBundle et PHP 8.4 pour une protection robuste.
- [Les DTOs : arrêtez de transformer vos données en kebab](https://lecodeestdanslepre.fr/billets/les-dtos-arretez-de-transformer-vos-donnees-en-kebab/): Les tableaux associatifs PHP sont une source de bugs. Le DTO est l'antidote : un contrat pour vos données. Découvrez comment PHP 8 rend les DTOs élégants.
- [Attributs PHP : la moitié qu'on oublie d'écrire](https://lecodeestdanslepre.fr/billets/attributs-php-moities/): Découvrez les attributs PHP : déclaration et interprétation. Cet article compare cette nouveauté aux anciennes annotations et détaille leur fonctionnement.
- [L'injection de dépendance, ou comment être fainéant avec élégance](https://lecodeestdanslepre.fr/billets/linjection-de-dependance-ou-comment-etre-faineant-avec-elegance/): Autowiring, services tagués, #[Required] : ce que le container Symfony fabrique à votre place, et ce que ça coûte quand le process ne meurt plus entre deux requêtes.
- [Les design patterns supposent que le process va mourir](https://lecodeestdanslepre.fr/billets/design-patterns-en-php-les-heros-de-l-ombre/): Les design patterns PHP supposent un process qui meurt à la fin de la requête. FrankenPHP en worker mode supprime cette garantie. Cinq patterns au banc d'essai.
- [Arrêtez les God Controllers, passez à l'ADR](https://lecodeestdanslepre.fr/billets/arretez-les-god-controllers-passez-a-l-adr/): Le pattern ADR décompose les requêtes HTTP en 3 rôles : Action, Domain, Responder. Il évite les God Controllers et améliore la maintenabilité.
- [MVC : comment séparer proprement ce qu'on va de toute façon mélanger ensuite](https://lecodeestdanslepre.fr/billets/mvc-comment-separer-proprement-ce-quon-va-de-toute-facon-melanger-ensuite/): Symfony : évitez le chaos du pattern MVC mal appliqué. Découvrez où placer la logique métier pour un code propre et maintenable, loin des exemples scolaires.
- [Composer : le manifeste du développeur moderne](https://lecodeestdanslepre.fr/billets/composer-le-manifeste-du-developpeur-moderne/): Composer, l'outil PHP essentiel pour gérer les dépendances. Comprenez son modèle mental : composer.json, composer.lock et le dossier vendor.
- [Anatomie d’un projet Symfony](https://lecodeestdanslepre.fr/billets/anatomie-dun-projet-symfony/): Analysez les dossiers d'un projet Symfony (bin, config, public, src, var) pour mieux organiser votre code et résoudre vos problèmes techniques.
- [CSP : le gilet pare-balles de votre site web](https://lecodeestdanslepre.fr/billets/csp-le-gilet-pare-balles-de-votre-site-web/): La CSP en production : retour d'expérience après application sur un site web. Les limites des allow-lists et la puissance des nonces pour sécuriser votre site.
- [Les tests : comment bien jouer au Cluedo](https://lecodeestdanslepre.fr/billets/les-tests-comment-bien-jouer-au-cluedo/): Enquêtez sur vos bugs : tests unitaires, fonctionnels, mutation, et tests JS. Apprenez à traquer les coupables dans votre code avec des exemples concrets.
- [Docker et les containers : parce qu'il faut expliquer avec des pancakes](https://lecodeestdanslepre.fr/billets/docker-et-les-containers-parce-quil-faut-expliquer-avec-des-pancakes/): Comprendre Docker et les conteneurs grâce à une analogie simple avec des pancakes. Apprenez les concepts d'image, conteneur, volume et réseau.
