Как известно, Laravel даёт возможность создавать полноценное веб-приложение, каркас которого изначально построен по правилам паттерна MVC. После установки Laravel на свой компьютер, мы получаем базовую структуру файлов и папок, которые являются отправной точкой для нашего проекта. Понимание назначения их обязательно, особенно на начальном этапе изучения фреймворка, т.к. опираясь на это, вы будете строить большие и маленькие приложения.
После хорошего опыта работы с фреймворком, вы поймёте, что можете свободно организовывать ваше приложение на своё усмотрение. В Laravel нет ограничений в плане размещения каких-либо классов в своих директориях. Это будет работать, пока Composer может автоматически загружать файлы класса.
Давайте рассмотрим краткий список файлов и папок и их назначение в проекте Laravel.
/bootstrap/ - Папка с файлами для загрузки фреймворка и настройки автозагрузки /app/ - Папка для кода ядра приложения (контроллеры, модели) /resources/views/ - Папка с шаблонами (представлениями) /resources/sass/ - Исходные файлы SASS /config/ - Папка с файлами настроек приложения /database/migrations/ - Папка с файлами миграций для БД /public/ - Публичная папка проекта (в ней index.php является входной точкой для всех запросов) /routes/ - Содержит файлы для определения маршрутов веб-приложения /storage/ - Папка содержит скомпилированные Blade-шаблоны, файлы-сессии, кэши файлов и др. /tests/ - Папка содержит ваши автотесты (для unit-тестирования) /vendor/ - Папка содержит Composer-зависимости для вашего приложения /.gitattributes - Файлы для работы Git-а /.gitignore - /.phpunit.xml - Файл для PHPUnit (тестирование) /composer.json - Файлы для Сomposer-а /composer.lock - /package.json - /artisan - Файл консольного приложения (CLI) - Artisan /.env - Глобальные настройки проекта (параметры MySQL, SMTP, и т.д.) /webpack.mix.js - Файл-микс с правилами для сборки JS/CSS из исходников, требуется установленный Node.js
Список не маленький, и на первых этапах кажется, что всё запутано. Однако, в процессе работы, придёт понимание, на сколько удобно организована данная структура для разработки веб-приложений разных сложностей. Тут выжимка из документации, где более подробно расписано назначение файлов и папок фреймворка.
Материалы по организации структуры фреймворка:
https://laravel.ru/docs/v5/structure
https://laravel.com/docs/8.x/structure