Symfony Flex est un plugin Composer qui automatise la configuration des projets Symfony lors de l'installation de dépendances. Il utilise des recipes pour appliquer mécaniquement les tâches répétitives comme l'activation de bundles, la création de fichiers de configuration ou la mise à jour des variables d'environnement, évitant ainsi les étapes manuelles fastidieuses. Par exemple, l'alias composer require messenger déclenche automatiquement l'installation du vrai package symfony/messenger et applique sa configuration via une recette dédiée.
Flex repose sur un système d'alias centralisé dans un fichier index.json, où chaque alias (comme messenger) est mappé à un package Composer réel (ex: symfony/messenger). Ces alias sont résolus avant même que Composer ne traite les dépendances, simplifiant la syntaxe pour les développeurs. Le plugin s'intègre à Composer via des hooks d'événements, comme POST_UPDATE_CMD, pour appliquer les recettes après l'installation des packages.
Une recette est un ensemble d'instructions (fichiers et configurations) qui guide Flex dans la mise en place des éléments nécessaires au bon fonctionnement d'un package Symfony. Contrairement à Composer, qui gère uniquement les dépendances PHP, Flex étend ses fonctionnalités via une API publique de plugins, rendant l'automatisation possible sans modifier le cœur de Composer.
L’article présente image-optimizer, un package PHP open source (via Composer) qui automatise la conversion des images (PNG/JPG) vers des formats modernes (AVIF, WebP) et génère des variantes responsive, réduisant significativement leur poids (jusqu’à 50% pour l’AVIF). Basé sur l’extension Imagick/ImageMagick, il s’intègre facilement dans les workflows Laravel, Symfony ou PHP vanilla. Une configuration simple permet de définir les dossiers sources/destinations, les qualités, les densités (retina) et les largeurs adaptatives. La commande vendor/bin/image-optimizer génère les images optimisées, avec des options comme --folder ou --force. L’article inclut un exemple de balise <picture> pour exploiter ces formats dans le HTML. Un gain de performance clé pour les sites web ! 🚀
L'article présente le fichier composer.json comme un élément central du développement moderne en PHP, en le comparant à un buffet à volonté où l'on accumule diverses dépendances. Il détaille les composants essentiels, tels que PHP 8.2, Doctrine ORM, et EasyAdminBundle, qui simplifient le développement en évitant l'écriture manuelle de SQL ou la création d'interfaces administratives. L'article met également en avant des outils de sécurité comme Scheb 2FA et Nelmio Security Bundle, ainsi que des utilitaires spécifiques comme Endroid QR Code et HTMLPurifier. Il souligne l'importance des bundles Symfony, tels que Asset Mapper et Monolog, qui facilitent la gestion des ressources et le logging. Enfin, il mentionne des outils de test comme PHPUnit et PHPStan, ainsi que des polyfills pour assurer la rétrocompatibilité. Le fichier composer.json est décrit comme un sac à dos rempli d'outils indispensables pour un développement PHP efficace et sécurisé.
Tout est dans le titre... sauf que ça montre comment installer une dépendance "de dev" même si elle est en conflit avec les dépendances "normales" d'un projet -> dans le cas de php-cs-fixer, il a besoin de symfony/console 5.4 ce qui est incompatible avec symfony 7
L'auteur présente Open Source Vulnerability Detector aka osv-detector qui permet de détecter les vulnérabilités des dépendances de tous types de projet (utilisation de npm, de composer, etc.) Il a même créé une image docker pour l'utilisation dans une CI
Tout est dans le titre
Tester n'importe quel package Composer directement dans votre navigateur - Dév. Web - ShevArezo`Blog
Tout est dans le titre
Tout est dans le titre
Rappel : Bedrock permet de gérer son WordPress avec Composer
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
Tout est dans le titre (via https://damien.pobel.fr/post/veille-semaine-03-2018/ )
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre