Skip to content
Icon

ПРЕДУПРЕЖДЕНИЕ Вы просматриваете документацию к старой версии Laravel. Рассмотрите возможность обновления Вашего проекта до Laravel 9.x.

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

Введение

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

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

Каталог приложения

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

Каталог начальной загрузки

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

Каталог конфигурации

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

Каталог базы данных

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

Публичный каталог

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

Каталог ресурсов

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

Каталог маршрутов

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

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

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

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

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

Каталог хранилища

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

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

Каталог тестов

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

Каталог поставщиков

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

Каталог приложения

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

Каталог app содержит множество дополнительных каталогов, таких как Console, Http и Providers. Считайте, что каталоги Console и Http обеспечивают API в ядре Вашего приложения. Протокол HTTP и интерфейс командной строки являются механизмами взаимодействия с приложением, но фактически не содержат логики приложения. Другими словами, это два способа выдачи команд Вашему приложению. Каталог Console содержит все Artisan команды, а каталог Http - контроллеры, мидлвары и запросы.

В каталоге app будет создано множество других каталогов, когда Вы будете использовать Artisan-команды make для создания классов. Так, например, каталог app/Jobs не будет существовать, пока Вы не выполните Artisan-команду make:job для создания класса задания.

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

Каталог трансляции

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

Каталог консоли

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

Каталог событий

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

Каталог исключений

Каталог Exceptions содержит обработчик исключений Вашего приложения, а также является хорошим местом для размещения любых исключений, генерируемых Вашим приложением. Если Вы хотите настроить, как Ваши исключения регистрируются или обрабатываются, Вам следует изменить класс Handler в этом каталоге.

Каталог Http

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

Каталог заданий

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

Каталог слушателей

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

Каталог почты

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

Каталог моделей

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

Каталог уведомлений

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

Каталог политик

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

Справочник провайдеров

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

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

Каталог правил

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