Структура каталогов Laravel
Введение
Структура приложения Laravel по умолчанию предназначена для обеспечения отличной отправной точки создания как для больших, так и для небольших приложений. Но вы можете организовать свое приложение так, как вам нравится. Laravel почти не налагает ограничений на расположение любого класса - до тех пор, пока Composer может автоматически загружать класс.
Корневой каталог
Каталог App
Каталог App
содержит основной код вашего приложения. Вскоре мы рассмотрим этот каталог более подробно; однако почти все классы в вашем приложении будут в этом каталоге.
Каталог Bootstrap
Каталог Bootstrap
содержит файл app.php
, который загружает фреймворк. В этом каталоге также находится каталог cache
, который содержит файлы, сгенерированные платформой для оптимизации производительности, такие как файлы кеша маршрутов и служб.
Каталог Config
Каталог config
, как следует из названия, содержит все файлы конфигурации вашего приложения. Это отличная идея - прочитать все эти файлы и ознакомиться со всеми доступными вам вариантами.
Каталог Database
Каталог Database
содержит миграции ваших баз данных, фабрики моделей и стартовые значения. При желании вы также можете использовать этот каталог для хранения базы данных SQLite.
Каталог Public
Каталог Public
содержит файл index.php
, который является точкой входа для всех запросов, поступающих в ваше приложение, и настраивает автозагрузку. В этом каталоге также находятся сопутствующие файлы вашего приложения, такие как изображения, JavaScript и CSS.
Каталог Resources
Каталог Resources
содержит ваши представления, а также ваши сырые, нескомпилированные ресурсы, такие как CSS или JavaScript. В этом каталоге также находятся все ваши языковые файлы.
Каталог Routes
Каталог Routes
содержит все определения маршрутов для вашего приложения. По умолчанию в Laravel включены несколько файлов маршрутов: web.php
, api.php
, console.php
и channels.php
.
Файл web.php
содержит маршруты, которые RouteServiceProvider
помещает в группу middleware web
, которая обеспечивает состояние сеанса, защиту CSRF и шифрование файлов cookie. Если ваше приложение не предлагает RESTful API без сохранения состояния, все ваши маршруты, скорее всего, будут определены в файле web.php
.
Файл api.php
содержит маршруты, которые RouteServiceProvider
помещает в группу middleware api
, которая обеспечивает ограничение скорости. Эти маршруты предназначены для того, чтобы не иметь состояния, поэтому запросы, поступающие в приложение по этим маршрутам, предназначены для аутентификации с помощью токенов и не будут иметь доступа к состоянию сеанса.
В файле console.php
вы можете определить все свои консольные команды на основе Closure. Каждое замыкание привязано к экземпляру команды, что обеспечивает простой подход к взаимодействию с методами ввода-вывода каждой команды. Несмотря на то, что этот файл не определяет маршруты HTTP, он определяет точки входа (маршруты) в ваше приложение с консоли.
В файле channels.php
вы можете зарегистрировать все каналы вещания событий, которые поддерживает ваше приложение.
Каталог Storage
Каталог Storage
содержит ваши скомпилированные шаблоны Blade, сеансы на основе файлов, кеши файлов и другие файлы, созданные фреймворком. Этот каталог разделен на каталоги app
, framework
и logs
. Каталог app
может использоваться для хранения любых файлов, созданных вашим приложением. Каталог framework
используется для хранения файлов и кешей, созданных платформой. Наконец, каталог logs
содержит файлы журналов вашего приложения.
Каталог storage/app/public
может использоваться для хранения файлов, созданных пользователями, таких как аватары профиля, которые должны быть общедоступными. Вы должны создать символическую ссылку в public/storage
, которая указывает на этот каталог. Вы можете создать эту ссылку, используя команду php artisan storage:link
.
Каталог Tests
Каталог Tests
содержит ваши автоматизированные тесты. Пример теста PHPUnit предоставляется из коробки. Каждый тестовый класс должен иметь суффикс Test
. Вы можете запускать свои тесты с помощью команд phpunit
или php vendor/bin/phpunit
.
Каталог Vendor
Каталог vendor
содержит ваши зависимости Composer.
Каталог приложений
Большая часть вашего приложения размещается в каталоге app
. По умолчанию этот каталог находится в пространстве имен в App
и автоматически загружается Composer с использованием стандарта автозагрузки PSR-4.
Каталог app
содержит множество дополнительных каталогов, таких как Console
, Http
и Providers
. Думайте о каталогах Console
и Http
как о предоставлении API в ядре вашего приложения. Протокол HTTP и интерфейс командной строки (CLI) являются механизмами взаимодействия с вашим приложением, но фактически не содержат логики приложения. Другими словами, это два способа подачи команд вашему приложению. Каталог Console
содержит все ваши Artisan команды, а каталог Http
содержит ваши контроллеры, промежуточное программное обеспечение и запросы.
Множество других каталогов будет создано внутри каталога app
, когда вы будете использовать команды make
Artisan для создания классов. Так, например, каталог app/Jobs
не будет существовать, пока вы не выполните Artisan команду make:job
для создания класса задания.
Многие классы в каталоге
app
могут быть созданы Artisan с помощью команд. Чтобы просмотреть доступные команды, запустите командуphp artisan list make
в вашем терминале.
Каталог Broadcasting
Каталог Broadcasting
содержит все классы каналов вещания для вашего приложения. Эти классы создаются с помощью команды make:channel
. Этот каталог не существует по умолчанию, но будет создан для вас, когда вы создадите свой первый канал. Чтобы узнать больше о каналах, ознакомьтесь с документацией по трансляции событий.
Каталог Console
Каталог Console
содержит все пользовательские команды Artisan для вашего приложения. Эти команды могут быть созданы с помощью команды make:command
. В этом каталоге также находится ядро консоли, в котором регистрируются ваши пользовательские команды Artisan и определяются ваши запланированные задачи.
Каталог Events
Этот каталог не существует по умолчанию, но будет создан для вас Artisan-командами event:generate
и make:event
. Каталог Events
содержит классы событий. События могут использоваться для предупреждения других частей вашего приложения о том, что произошло определенное действие, обеспечивая большую гибкость и модульность.
Каталог Exceptions
Каталог Exceptions
содержит обработчик исключений вашего приложения, а также является хорошим местом для размещения любых исключений, создаваемых вашим приложением. Если вы хотите настроить, как ваши исключения регистрируются или обрабатываются, вам следует изменить класс Handler
в этом каталоге.
Каталог Http
Каталог Http
содержит ваши контроллеры, промежуточное ПО и запросы форм. Практически вся логика обработки запросов, поступающих в ваше приложение, будет размещена в этом каталоге.
Каталог Jobs
Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните Artisan команду make:job
. В каталоге Jobs
хранятся задания в очереди для вашего приложения. Задания могут быть поставлены в очередь вашим приложением или выполняться синхронно в рамках текущего жизненного цикла запроса. Задания, которые выполняются синхронно во время текущего запроса, иногда называют «командами», поскольку они являются реализацией шаблона команд.
Каталог Listeners
Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните Artisan команды event:generate
или make:listener
. Каталог Listeners
содержит классы, которые обрабатывают ваши события. Слушатели событий получают экземпляр события и выполняют логику в ответ на запускаемое событие. Например, событие UserRegistered
может обрабатываться приемником SendWelcomeEmail
.
Каталог Mail
Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните Artisan команду make:mail
. Каталог Mail
содержит все ваши классы, которые представляют электронные письма, отправленные вашим приложением. Почтовые объекты позволяют вам инкапсулировать всю логику создания электронной почты в один простой класс, который может быть отправлен с помощью метода Mail::send
.
Каталог Models
Каталог Models
содержит все классы вашей модели Eloquent. Eloquent ORM, включенный в Laravel, предоставляет красивую и простую реализацию ActiveRecord для работы с вашей базой данных. Каждая таблица базы данных имеет соответствующую «Модель», которая используется для взаимодействия с этой таблицей. Модели позволяют запрашивать данные в таблицах, а также вставлять новые записи в таблицу.
Каталог Notifications
Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните Artisan команду make:notification
. Каталог Notifications
содержит все «транзакционные» уведомления, которые отправляет ваше приложение, например простые уведомления о событиях, которые происходят в вашем приложении. Уведомления Laravel позволяют абстрагироваться от отправки уведомлений по различным драйверам, таким как электронная почта, Slack, SMS, или хранятся в базе данных.
Каталог Policies
Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните Artisan команду make:policy
. Каталог Policies
содержит классы политик авторизации для вашего приложения. Политики используются для определения того, может ли пользователь выполнить определенное действие с ресурсом. Для получения дополнительной информации ознакомьтесь с документацией по авторизации.
Каталог Providers
Каталог Providers
содержит всех поставщиков услуг для вашего приложения. Поставщики услуг (Service providers) загружают ваше приложение, привязывая службы к контейнеру служб, регистрируя события или выполняя любые другие задачи для подготовки приложения к входящим запросам.
В новом приложении Laravel этот каталог уже будет содержать несколько провайдеров. При необходимости вы можете добавлять своих собственных провайдеров в этот каталог.
Каталог Rules
Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните Artisan команду make:rule
. Каталог Rules
содержит настраиваемые объекты правил проверки для вашего приложения. Правила используются для инкапсуляции сложной логики проверки в простой объект. Для получения дополнительной информации ознакомьтесь с документацией по валидации.
Перевод:
https://laravel.com/docs/8.x/structure
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)