refactor(core) : isole Core du module Sites via SiteProviderInterface + resolve_target_entities
Supprime les imports directs de App\Module\Sites\* depuis le module Core : - SiteProviderInterface (Shared/Contract) : contrat minimal findByName(), etendu par SiteRepositoryInterface pour reutilisation DI. - AppFixtures : injecte SiteProviderInterface au lieu de SiteRepositoryInterface. - User.php : targetEntity des mappings ORM pointe desormais sur SiteInterface, resolu a la classe concrete via doctrine.orm.resolve_target_entities (pattern officiel Doctrine pour les bounded contexts DDD). - JoinColumn/InverseJoinColumn explicites sur la ManyToMany user_site pour forcer les noms de colonnes (sinon Doctrine derive site_interface_id). Respecte la regle CLAUDE.md "jamais d'import direct entre modules" — il reste l'exception SitesFixtures::class dans getDependencies() (contrainte d'API DependentFixtureInterface, meme registre que resolve_target_entities). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,13 @@ doctrine:
|
||||
identity_generation_preferences:
|
||||
Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity
|
||||
auto_mapping: true
|
||||
# Mapping contrat DDD → classe concrete. Permet au module Core de
|
||||
# referencer `SiteInterface` dans ses ORM mappings (User) sans importer
|
||||
# la classe concrete du module Sites. Pattern officiel Doctrine pour
|
||||
# les bounded contexts, remplace l'ancien import direct
|
||||
# `App\Module\Sites\Domain\Entity\Site` dans User.php.
|
||||
resolve_target_entities:
|
||||
App\Shared\Domain\Contract\SiteInterface: App\Module\Sites\Domain\Entity\Site
|
||||
mappings:
|
||||
Core:
|
||||
type: attribute
|
||||
|
||||
@@ -28,5 +28,8 @@ services:
|
||||
App\Module\Sites\Domain\Repository\SiteRepositoryInterface:
|
||||
alias: App\Module\Sites\Infrastructure\Doctrine\DoctrineSiteRepository
|
||||
|
||||
App\Shared\Domain\Contract\SiteProviderInterface:
|
||||
alias: App\Module\Sites\Infrastructure\Doctrine\DoctrineSiteRepository
|
||||
|
||||
App\Module\Sites\Application\Service\CurrentSiteProviderInterface:
|
||||
alias: App\Module\Sites\Application\Service\CurrentSiteProvider
|
||||
|
||||
Reference in New Issue
Block a user