РекомендуетсяLaravel 12PHP

Laravel: начальная структура и регистрация кода

Начинайте новый Laravel-модуль с принятых в проекте путей, PSR namespace и штатных точек регистрации. Контроллер получает зависимости через container, вход проходит Request/Policy, а представление не запускает бизнес-операцию.

Опубликовано Проверено Изменено

Плохо

Логика заказа добавлена в vendor/laravel/framework.
routes/web.php содержит глобальные функции и ручные require всех классов.
Blade-шаблон напрямую создает заказ и отправляет письмо.
Для одного endpoint заранее созданы пустые Repository/Service/Manager/Factory.

Хорошо

app/Http/Controllers/OrderController.php  App\Http\Controllers\OrderController
app/Http/Requests/StoreOrderRequest.php   App\Http\Requests\StoreOrderRequest
app/Models/Order.php                     App\Models\Order
app/Policies/OrderPolicy.php             App\Policies\OrderPolicy
app/Jobs/SendReceipt.php                 App\Jobs\SendReceipt
routes/web.php                          маршруты браузерного сценария
resources/views/orders/show.blade.php    отображение переданных данных
tests/Feature/OrdersTest.php             проверка маршрута и записи
Сервис/Action добавляется, когда у операции появляется собственная граница.

Почему это важно

Штатная структура позволяет Laravel обнаруживать и загружать код предсказуемо. Необходимые границы определяются поведением: общий случай не требует обязательных дополнительных слоев поверх Eloquent.

Когда применять

Laravel 12.x; версия PHP и Composer определяются выбранной версией framework. В примере действует стандартная PSR-4 карта App\ -> app/. Классы — StudlyCaps, методы — camelCase; имена SQL-таблиц и URL следуют своему контракту и не обязаны копировать имя класса.

Директории Laravel — исходное соглашение, а не запрет иной архитектуры: framework допускает другую организацию при правильной автозагрузке и регистрации. У interface binding должно быть явное место в service provider; concrete-класс может разрешаться container без искусственного интерфейса.

В новых Laravel 12 приложениях маршрутизация/middleware задаются через штатный bootstrap, providers — через соответствующий список приложения. Не переносите инструкции про старый Http Kernel или providers из другой major-версии без сверки. API-маршруты и auth-стек подключаются по выбранному профилю, не предполагаются автоматически.

Environment читается в конфигурации, приложение использует config; проверьте поведение config cache. Не помещайте секреты в Blade или клиентскую конфигурацию. Миграции и lock-файл приложения входят в его воспроизводимую поставку; этот репозиторий содержит только описание.

Кто что делает

Человек

Выбирает профиль web/API и разумную границу операции, не навязывая слои без задачи.

AI-агент

Сверяет версию bootstrap и PSR-4, добавляет только необходимые классы и проверяет реальный маршрут.

Как проверить у себя

Вход и действиеОжидаемый результатСвидетельство
Новый маршрут и controller в чистой установкеКласс загружается, dependency разрешается, маршрут доступенroute:list и HTTP smoke
Interface без binding или неверный регистр классаОшибка обнаружена при проверке проектаContainer/production install test
Конфигурация закешированаEndpoint использует правильные значения, без чтения env из бизнес-кодаТест config cache
Рендер страницы и повторный GETНет записи/отправки из шаблонаСчетчики побочных эффектов

Иная архитектура допустима при документированных путях и тех же проверяемых границах.

ПервоисточникиИстория изменений на GitHub

Дата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.