Прежде чем начать что-то менять, следует познакомиться с той структурой, которая уже есть, так как структура отражает определённую философию разработки на выбранном инструменте. И выбрав инструмент мы вольны воплощать на нём любые фантазии, но оставаясь в рамках философии инструмента, иначе фантазии превратятся в кашу. Laravel реализует MVC (model-view-controller) архитектуру приложения.
Чтобы познакомиться со структурой laravel нам, прежде всего, нужно рассмотреть структуру двух каталогов: корневого и каталога app. Подробный обзор можно найти на странице описания структуры каталогов. Упомянем здесь лишь те которые нам понадобятся в ближайшее время.
Файловая структура проекта
- app – основная директория приложения, здесь хранится описание большей части всех классов, которые мы опишем.
- bootstrap – это скрипты инициации и загрузки всего приложения.
- config – содержит описание конфигурации нашего приложения, скоро мы обратимся к нему для настройки соединения с базой данных.
- database – все созданные нами миграции будут храниться здесь, здесь же хранятся модели фабрик и сидеры для наполнения или посева данных в БД.
- public – здесь лежит index.php – точка входа в наше приложение через которую проходят все запросы идущие от клиента. Так же здесь лежат файлы картинок, js скриптов и css.
- resources – здесь хранятся наши представления и шаблоны, а также языковые файлы и не скомпилированные js и css файлы.
- routes – здесь мы будем записывать правила маршрутизации приложения.
- storage – сгенерированные временные файлы, кэш и журнал событий.
- tests – Тесты приложения.
- vendor – Довольно тяжёлая директория, здесь хранятся все вспомогательные инструменты и любые решения сторонних разработчиков. Например сюда попадёт вся структура админки, которую мы установим в будущем.
Файловая структура каталога приложения (app)
Основная часть логики приложения содержится в каталоге app. По умолчанию этот каталог находится в пространстве имен App и автоматически загружается Composer с использованием стандарта автозагрузки PSR-4.
В только что созданном приложении многие каталоги логики отсутствуют, но могут быть добавлены при использовании make команд artisan. При старте следует обратить внимание на три ключевых каталога: Providers, Console, Http.
Console, Http – содержат соответствующее API для обращения к ядру вашего приложения. Протокол HTTP и интерфейс командной строки являются механизмами взаимодействия с вашим приложением, но на самом деле не содержат логики приложения. Другими словами, это два способа подачи команд вашему приложению. Console Каталог содержит все ваши команды Artisan, в то время как Http каталог содержит ваши контроллеры, промежуточное ПО и запросы к БД.
Providers – Каталог содержит всех поставщиков услуг вашего приложения. Поставщики услуг загружают ваше приложение, привязывая службы к контейнеру служб, регистрируя события или выполняя любые другие задачи для подготовки вашего приложения к входящим запросам.
О том, как настроить соединение с базой данных следующая статья.