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)
interface UserRepositoryInterface
{
public function findById(UserId $id): User;
public function save(User $user): void;
}
// Adapter (implementation)
class DoctrineUserRepository implements UserRepositoryInterface
{
public function __construct(
private EntityManagerInterface $em
) {}
}
Cette separation permet de tester le domaine sans base de donnees et de changer d'infrastructure sans toucher au metier.