Interview frequency: …
Short answer
It replaces MVC with three parts: Action (single-purpose controller), Domain (business logic and models), and Responder (response and JSON formatting).
Explanation
In large Laravel applications, controller classes such as UserController can grow to thousands of lines (Fat Controllers). ADR proposes replacing them with small, focused Action Classes that implement __invoke, such as RegisterUserAction or ExportInvoicesAction. This isolates logic, simplifies unit testing, and prevents responsibilities from overlapping.
Code example
// App/Actions/CreateOrderAction.php
class CreateOrderAction {
public function __invoke(User $user, array $items): Order {
// Pure business logic, isolated and independently testable
}
}Common mistakes
- Moving all bloated logic into generic Services that turn into bloated God Objects themselves.