Разделение приложения на горизонтальные слои с четкими обязанностями: Presentation (контроллеры, ввод/вывод), Application/Service (бизнес-логика, оркестрация), Domain (сущности, правила), Infrastructure (БД, внешние API). Зависимости сверху вниз; нижний слой не знает о верхнем. Прост в понимании, хорошо подходит для CRUD-приложений.
// Controller -> Service -> Repository
class UserController { public function __construct(private UserService $svc) {} }
class UserService { public function __construct(private UserRepository $repo) {} }
class UserRepository { public function __construct(private PDO $db) {} }Отличие от Clean/Hexagonal: layered допускает прямую зависимость от конкретных классов, а не только от интерфейсов. Подходит для старта; при росте сложности переходят к Clean/Hexagonal.