- Classe :
AppoloDev\SFToolboxBundle\Maker\Command\MakeDomainEntityCommand - Fichier source :
src/Maker/Command/MakeDomainEntityCommand.php - Commande console :
make:domain:entity
Génère une entité Doctrine et son repository dans l'arborescence src/Domain/<Domain>/, à partir des templates maker/doctrine/Entity.tpl et Repository.tpl (voir FileCreator/EntityFileCreator), puis enchaîne sur la commande native make:entity de Symfony MakerBundle pour l'assistant interactif d'ajout de champs.
php bin/console make:domain:entity [domain] [entity] [mapping]domain(optionnel, demandé interactivement si omis) : nom du domaine métier, ex.Catalog.entity(optionnel, demandé interactivement si omis) : nom de l'entité, ex.Book.mapping(optionnel) : confirmation interne que le mapping Doctrine a été configuré — généralement laissé à la commande elle-même (voir plus bas).
src/Domain/<Domain>/Entity/<Entity>.php— utilise les traitsIdentifiableetTimestampable, avec#[ORM\Entity(repositoryClass: ...)]et#[ORM\HasLifecycleCallbacks].src/Domain/<Domain>/Repository/<Entity>Repository.php—extends ServiceEntityRepository implements BuilderCriteriaInterface, utiliseBuilderCriteria,GroupAndOrderCriteria,WhereCriteria,JoinCriteria,SelectCriteria, avecprotected static string $aliasdéjà renseigné, et une méthode stubquerySearch(?string $queryString): selfà compléter vous-même.
- Si
domain/entityne sont pas fournis en argument, la commande les demande viainteract(). - Vérifie si les fichiers existent déjà (avertit sans écraser si c'est le cas).
- Génère les deux fichiers.
- Demande confirmation que le mapping Doctrine ORM est configuré (boucle bloquante tant que non confirmé) ; si non confirmé, affiche le YAML à ajouter dans
config/packages/doctrine.yamlsousdoctrine.orm.mappings:<Domain>: is_bundle: false type: attribute dir: '%kernel.project_dir%/src/Domain/<Domain>/Entity' prefix: 'App\Domain\<Domain>\Entity' alias: <Domain>
- Une fois confirmé, lance
bin/console make:entity App\Domain\<Domain>\Entity\<Entity>dans un sous-processus interactif (TTY), pour ajouter des champs à l'entité via l'assistant natif de Symfony MakerBundle.
php bin/console make:domain:entity Catalog BookRésultat :
src/Domain/Catalog/Entity/Book.php
src/Domain/Catalog/Repository/BookRepository.php
Puis, une fois le mapping Doctrine confirmé, l'assistant make:entity natif de Symfony prend le relais pour ajouter les champs (titre, prix, etc.) de manière interactive.
- FileCreator/EntityFileCreator — logique de génération des fichiers.
- MakeScaffoldCommand — pour générer le CRUD complet une fois l'entité créée.