git a206291af87806a6b59f25bc66a24fed574f21f7
Дефолтная структура приложения Laravel спроектирована таким образом, чтобы стать удобной отправной точкой и для маленьких, и для больших приложений. И, разумеется, вы можете изменить эту структуру и организовать приложение так, как вам нравится - Laravel не накладывает почти никаких ограничений на то, где именно должен находиться тот или иной класс - лишь бы Composer смог его загрузить.
В корне свежеустановленного фреймворка вы можете видеть следующие каталоги:
app
- здесь, как вы догадываетесь, располагается собственно ваше приложение. Ниже мы рассмотрим содержимое этого каталога подробнее.
bootstrap
- содержит файлы, которые осуществляют первоначальную загрузку (bootstraping) фреймворка и настраивают автозагрузку классов. В подпапке cache
хранятся различные сгенерированные файлы, необходимые для работы фреймворка.
config
- здесь находятся конфигурационные файлы приложения.
database
- каталог для файлов миграций БД и "посева" данных. Здесь же можно хранить файл базы данных SQLite.
public
- является DocumentRoot домена вашего приложения и содержит статические файлы - css, js, изображения и т.п.
resources
- здесь находятся шаблоны (Views), файлы локализации и, если таковые имеются, рабочие файлы LESS, SASS и js-приложения на фреймворках типа ReactJS, AngularJS или Ember, которые потом собираются внешним инструментом в папку public
.
storage
- этот каталог должен иметь права для записи в него извне и в нём Laravel хранит скомпилированные Blade-шаблоны, файлы сессии, файловый кэш, другие сгенерированные файлы, нужные для работы, а так же логи работы приложения. Эти файлы располагаются в подпапках app
, framework
и logs
test
- каталог для юнит-тестов.
vendor
- в этот каталог Composer устанавливает пакеты, указанные в composer.json.
В каталоге app
находятся классы вашего Laravel-приложения. По умолчанию, этот каталог имеет неймспейс App
и классы в нём автозагружаются согласно стандарту PRS-4.
Внутри находятся несколько подкаталогов, таких как Console
, Http
и Providers
. Первые два каталога, как следует из названия, содержат классы, предоставляющие API к вашему приложению по протоколам CLI (командная строка) и HTTP (работа через браузер). В Console
находятся классы Artisan-команд, а в Http
- контроллеры, посредники (middlewares) и реквесты (классы валидации пользовательского ввода). Такой подход должен подтолкнуть новичков к отходу от общепринятого, но вредного подхода писать весь код в контроллерах, и абстрагировать логику приложения от метода обращения к нему.
Каталог Events
содержит классы событий. События служат для
Каталог Exceptions
содержит обработчики исключений, а так же здесь следует размещать сами классы исключений, которые используются в вашем приложении.
Каталог Jobs
содержит задачи, исполняемые в очередях
Каталог Listeners
содержит классы обработчиков событий. В них содержится логика - что именно нужно делать в ответ на возникшее событие. Так, событие UserRegistered
из папки Events
может вызывать обработчик SendWelcomeEmail
, который находится в папке Listeners
Каталог Policies
содержит классы политик, которые занимаются разграничением доступа приложения.
Примечание: В каталоге
app
можно генерировать соответствующие классы Artisan-командойmake
. Подробнее смотрите в списке доступных командphp artisan list
и в справке по конкретной командеphp artisan help make:policy