Поддержите проект сделав пожертвование.
Поддержите нас - каждый вклад важен!
Поддержите нас - каждый вклад важен!

Структура каталогов

Введение

Структура приложения Laravel по умолчанию предназначена для обеспечения отличной отправной точки как для больших, так и небольших приложений. Но вы можете организовать свое приложение так, как вам нравится. Laravel почти не налагает ограничений на расположение любого конкретного класса, до тех пор, пока Composer может автоматически загружать класс.

Новичок в Laravel? Посетите Laravel Bootcamp (английский язык), чтобы практически ознакомиться с фреймворком, в то время как мы проведем вас через процесс создания вашего первого приложения на Laravel.

Корневой каталог

Каталог app

Каталог app содержит основной код вашего приложения. Вскоре мы рассмотрим этот каталог более подробно; однако почти все классы в вашем приложении будут в этом каталоге.

Каталог bootstrap

Каталог bootstrap содержит файл app.php, который загружает фреймворк. В этом каталоге также находится каталог cache, содержащий файлы, сгенерированные фреймворком для оптимизации производительности, например, файлы кеша маршрутов и служб.

Каталог config

Каталог config, как следует из названия, содержит все файлы конфигурации вашего приложения. Отличная идея прочитать все эти файлы и ознакомиться со всеми доступными вам параметрами.

Каталог database

Каталог database содержит миграции ваших баз данных, фабрики моделей и наполнители. При желании вы также можете использовать этот каталог для хранения SQLite БД.

Каталог public

Каталог public содержит файл index.php, который является точкой входа для всех запросов, поступающих в ваше приложение, и конфигурирует автозагрузку. В этом каталоге также находятся ваши ресурсы, например, изображения, JavaScript и CSS.

Каталог resources

Каталог resources содержит ваши шаблоны, а также ваши необработанные, нескомпилированные ресурсы, например, JavaScript или CSS.

Каталог routes

Каталог routes содержит все определения маршрутов для вашего приложения. По умолчанию в Laravel входит два файла маршрутов: web.php и console.php.

Файл web.php содержит маршруты, которые Laravel размещает в группе посредников web, обеспечивающие состояние сессии, защиту CSRF и шифрование файлов куки. Если в вашем приложении не предполагается сохранение состояния и RESTful API, то, скорее всего, все ваши маршруты будут определены в файле web.php.

В файле console.php вы можете определить все ваши анонимные консольные команды. Каждое замыкание привязано к экземпляру команды, что обеспечивает простой подход к взаимодействию с методами ввода-вывода каждой команды. Несмотря на то, что этот файл не определяет маршруты HTTP, он определяет точки входа (маршруты) в ваше консольное приложение. Вы также можете запланировать задачи в файле console.php.

При желании вы можете установить дополнительные файлы маршрутов для маршрутов API (api.php) и каналов вещания (channels.php) с помощью команд Artisan install:api и install:broadcasting.

Файл api.php содержит маршруты, которые не сохраняют состояние, поэтому запросы, поступающие в приложение через эти маршруты, предназначены для аутентификации через токены и не будут иметь доступа в состояние сеанса.

В файле channels.php вы можете зарегистрировать все каналы трансляции событий, которые поддерживает ваше приложение.

Каталог storage

Каталог storage содержит ваши журналы (логи), скомпилированные шаблоны Blade, файлы сессий, кеша и другие файлы, созданные фреймворком. Этот каталог разделен на каталоги app, framework, и logs. Каталог app может использоваться для хранения любых файлов, созданных вашим приложением. Каталог framework используется для хранения файлов и кешей, сгенерированных фреймворком. Наконец, каталог logs содержит файлы журнала вашего приложения.

Каталог storage/app/public может использоваться для хранения файлов, созданных пользователями, таких как аватары профиля, которые должны быть общедоступными. Вы должны создать символическую ссылку (ярлык) в public/storage, которая указывает на этот каталог. Вы можете создать ссылку, используя команду php artisan storage:link Artisan.

Каталог tests

Каталог tests содержит ваши автоматизированные тесты. Примеры модульного Pest или PHPUnit и функционального тестов предоставляются из коробки. Каждый тестовый класс должен иметь суффикс Test. Вы можете запускать свои тесты с помощью команд /vendor/bin/pest или /vendor/bin/phpunit. Или, если вы хотите более подробное и красивое отображение результатов ваших тестов, вы можете запускать свои тесты с помощью команды php artisan test Artisan.

Каталог vendor

Каталог vendor содержит ваши Composer-зависимости.

Каталог пространства App

Большая часть вашего приложения находится в каталоге app. По умолчанию этот каталог находится в пространстве имен App и автоматически загружается Composer с использованием автозагрузчика стандарта PSR-4.

По умолчанию каталог app содержит каталоги Http, Models и Providers. Однако со временем внутри каталога приложения будет создано множество других каталогов, поскольку вы используете команды make Artisan для создания классов. Например, каталог app/Console не будет существовать до тех пор, пока вы не выполните команду Artisan make:command для создания класса команды.

Каталоги Console и Http более подробно описаны в соответствующих разделах ниже, но думайте о каталогах Console и Http как о предоставлении API для ядра вашего приложения. Протокол HTTP и CLI являются механизмами взаимодействия с вашим приложением, но фактически не содержат логики приложения. Другими словами, это два способа подачи команд вашему приложению. Каталог Console содержит все ваши команды Artisan, а каталог Http содержит ваши контроллеры, посредники (middleware) и запросы.

Многие классы в каталоге app могут быть созданы с помощью команд Artisan. Чтобы просмотреть доступные команды, выполните команду php artisan list make в консоли.

Каталог пространства Broadcasting

Каталог Broadcasting содержит все классы широковещательных каналов для вашего приложения. Эти классы генерируются с помощью команды make:channel. Этот каталог не существует по умолчанию, но будет создан для вас, когда вы создадите свой первый канал. Чтобы узнать больше о каналах, ознакомьтесь с документацией по трансляции событий.

Каталог пространства Console

Каталог Console содержит все пользовательские команды Artisan для вашего приложения. Эти команды могут быть сгенерированы с помощью команды make:command.

Каталог пространства Events

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команды event:generate или make:event Artisan. В каталоге Events находятся классы событий. События могут использоваться для предупреждения других частей вашего приложения о том, что произошло определенное действие, обеспечивая большую гибкость.

Каталог пространства Exceptions

Каталог Exceptions содержит все пользовательские исключения для вашего приложения. Эти исключения могут быть созданы с помощью команды make:exception.

Каталог пространства Http

Каталог Http содержит ваши контроллеры, посредники и запросы форм. Практически вся логика обработки запросов, поступающих в ваше приложение, будет размещена в этом каталоге.

Каталог пространства Jobs

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:job Artisan. В каталоге Jobs находятся планировщики заданий вашего приложения. Задания могут быть поставлены в очередь вашим приложением или выполняться синхронно в рамках жизненного цикла текущего запроса. Задания, которые выполняются синхронно во время текущего запроса, иногда называют «командами», поскольку они являются реализацией шаблона команды.

Каталог пространства Listeners

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команды event:generate или make:listener Artisan. Каталог Listeners содержит классы, которые обрабатывают ваши события. Слушатели событий получают экземпляр события и выполняют логику в ответ на запускаемое событие. Например, событие UserRegistered может обрабатываться слушателем SendWelcomeEmail.

Каталог пространства Mail

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:mail Artisan. Каталог Mail содержит все ваши классы для работы с электронными письмами, отправляемыми вашим приложением. Почтовые объекты позволяют вам инкапсулировать всю логику создания электронной почты в один простой класс, который может быть отправлен с помощью метода Mail::send.

Каталог пространства Models

Каталог Models содержит все ваши классы моделей Eloquent. Laravel содержит библиотеку Eloquent ORM, предоставляющую красивую и простую реализацию ActiveRecord для работы с вашей базой данных. Каждая таблица базы данных имеет соответствующую «Модель», которая используется для взаимодействия с этой таблицей. Модели позволяют запрашивать данные в таблицах, а также вставлять новые записи в таблицу.

Каталог пространства Notifications

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:notification Artisan. Каталог Notifications содержит все «транзакционные» уведомления, которые отправляются вашим приложением. Например, простые уведомления о событиях, которые происходят в вашем приложении. Уведомления Laravel позволяют абстрагироваться от отправки уведомлений по различным драйверам, таким как электронная почта, Slack, SMS, или сохранение в базе данных.

Каталог пространства Policies

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:policy Artisan. Каталог Policies содержит классы политик авторизации вашего приложения. Политики используются для определения того, может ли пользователь выполнить определенное действие с ресурсом.

Каталог пространства Providers

Каталог Providers содержит всех поставщиков служб вашего приложения. Поставщики служб загружают ваше приложение, связывая службы в контейнере служб, регистрируя события или выполняя любые другие задачи для подготовки вашего приложения к входящим запросам.

В новом приложении Laravel этот каталог уже будет содержать AppServiceProvider. При необходимости вы можете добавить свои собственные провайдеры в этот каталог.

Каталог пространства Rules

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:rule Artisan. Каталог Rules содержит пользовательские объекты правил валидации вашего приложения. Правила используются для инкапсуляции сложной логики проверки в простой объект. Для получения дополнительной информации ознакомьтесь с документацией по валидации.