codifyo / maker-bundle
Add the support of multi bundle app to symfony/maker-bundle
Requires
- symfony/maker-bundle: ^1.0@dev
README
Présentation
Codifyo MakerBundle est une librairie open source qui améliore et étend le célèbre symfony/maker-bundle.
Historiquement, Symfony permettait de générer du code (contrôleurs, entités, services) directement dans des bundles spécifiques. Avec la standardisation des architectures "Bundle-less" dans src/, cette fonctionnalité a été retirée du maker-bundle officiel.
Ce bundle restaure cette fonctionnalité indispensable pour les applications modulaires. Il intercepte les commandes natives du MakerBundle (ex: make:controller, make:entity) pour vous permettre de choisir le bundle de destination dans lequel le code sera généré.
Fonctionnalités
- 🚀 Multi-Bundle Support : Redirige la génération de fichiers vers n'importe quel bundle de votre dossier
src/. - 🪄 Décoration Transparente : Fonctionne avec toutes les commandes natives de
symfony/maker-bundlesans changer vos habitudes. - 📦 Commande
make:bundle: Réintroduit une commande permettant d'initialiser rapidement un nouveau bundle from scratch (structure, classe d'extension, configuration).
Compatibilité
- PHP : 8.0 et supérieur.
- Symfony : 5.4, 6.x et 7.x.
- MakerBundle : Supporte les versions
^1.0(y compris les générateurs modernes utilisantTemplateComponentGeneratoretClassDataintroduits récemment).
Installation
Installez le bundle via Composer :
composer require --dev codifyo/maker-bundle
Assurez-vous que le bundle est activé dans votre fichier config/bundles.php (uniquement pour l'environnement dev) :
return [ // ... Codifyo\MakerBundle\CodifyoMakerBundle::class => ['dev' => true], ];
Utilisation
Le bundle fonctionne en tâche de fond. Vous n'avez pas de nouvelles commandes à apprendre pour générer vos classes ! Utilisez simplement vos commandes habituelles.
Générer dans un bundle cible
php bin/console make:controller
Durant l'exécution, le bundle interceptera la commande et vous demandera :
Choose the bundle where the command must be created (e.g. AcmeBundle):
> MonCustomBundle
Le contrôleur sera alors créé directement dans src/MonCustomBundle/Controller/ avec le bon espace de nommage !
Mode non-interactif
Vous pouvez spécifier le nom du bundle en tant que dernier argument si vous souhaitez automatiser la génération :
php bin/console make:controller NomDuController MonCustomBundle
Créer un nouveau bundle
Utilisez la commande dédiée pour initialiser un nouveau bundle Symfony standard :
php bin/console make:bundle
Configuration
Aucune configuration supplémentaire n'est requise. Le bundle analyse automatiquement les bundles enregistrés dans config/bundles.php qui se trouvent sous le namespace App\.
Architecture
Sous le capot, Codifyo MakerBundle utilise l'injection de dépendances et le pattern Decorator :
- Un
CompilerPasstrouve toutes les commandes taguées avecmaker.commandet les remplace par un proxy (DecoratingMaker). - Lors de l'exécution, ce proxy intercepte les requêtes interactives.
- Le bundle utilise la Réflexion PHP pour modifier temporairement le
rootNamespaceinterne du générateur de Symfony MakerBundle afin d'y injecter le namespace du bundle cible, garantissant ainsi que l'autoloader PSR-4 place les fichiers dans le bon sous-dossier.
Développement et Contribution
Les contributions (Pull Requests, signalement d'issues) sont les bienvenues !
- Forkez le projet.
- Créez une branche pour votre fonctionnalité.
- Testez localement avec un projet Symfony.
- Soumettez une PR.
Tests
Actuellement, ce bundle s'appuie sur des tests d'intégration manuels en le liant à une application Symfony existante. Les tests automatisés PHPUnit sont en cours de planification.
Licence
Ce projet est distribué sous la licence MIT.