главная/ACL (Anti-Corruption Layer)
ACL

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 — это «переводчик» между внешним миром и вашим приложением.
Он защищает доменную логику и делает код чище, безопаснее и долговечнее.