Pourquoi l'architecture hexagonale ?
L'architecture hexagonale (ou Ports & Adapters) permet de separer la logique metier des details d'implementation technique. Votre domaine ne depend plus du framework, de la base de donnees ou des APIs externes.
Les concepts cles
- Domaine : Le coeur de votre application, les regles metier pures
- Ports : Les interfaces qui definissent comment le domaine communique avec l'exterieur
- Adapters : Les implementations concretes des ports (Doctrine, API HTTP, etc.)
Exemple en Symfony
// Port (interface)\ninterface UserRepositoryInterface\n{\n public function findById(UserId $id): User;\n public function save(User $user): void;\n}\n\n// Adapter (implementation)\nclass DoctrineUserRepository implements UserRepositoryInterface\n{\n public function __construct(\n private EntityManagerInterface $em\n ) {}\n}
Cette separation permet de tester le domaine sans base de donnees et de changer d'infrastructure sans toucher au metier.