
ACL (Anti-Corruption Layer)
ACL (Anti-Corruption Layer) — это слой защиты между вашим кодом и внешними сервисами. Он помогает изолировать вашу бизнес-логику от «грязных» или нестабильных данных извне. В итоге код становится чище, понятнее и проще поддерживать.
Пример:
Плохо (без ACL)
if ($resp['statusCode'] === '82') {
$order->setStatus('PAID');
}
Вы напрямую завязаны на магические значения внешнего API (82). Если API что-то поменяет — ваш код ломается. Бизнес-логика знает слишком много о стороннем сервисе.
Хорошо (с ACL)
$result = $paymentPort->capture($order);
if ($result->status === PaymentStatus::PAID) {
$order->markAsPaid();
}
Бизнес-логика работает только с своими понятиями: PaymentStatus::PAID.
Всё внешнее преобразование спрятано в ACL: сервис может вернуть что угодно, а вы получите нормальный результат в нужном формате.
ACL — это «переводчик» между внешним миром и вашим приложением.
Он защищает доменную логику и делает код чище, безопаснее и долговечнее.