Гексагональна архітектура ізолює ядро бізнес-логіки від зовнішнього світу.
- Ports - інтерфейси, через які ядро спілкується зі світом (
PaymentGateway,UserRepository). - Adapters - конкретні реалізації портів (
StripeAdapter,EloquentUserRepository, HTTP-контролер).
[ HTTP / CLI / Queue ] → Port → [ Domain Core ] → Port → [ DB / API / Mail ]
(adapters) (бізнес-логіка) (adapters)
Ядро не знає про Laravel, БД чи HTTP - воно залежить лише від абстракцій. Перевага: домен тестується ізольовано, зовнішні залежності легко підмінювати. У Laravel порти біндять до адаптерів через Service Container.