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

Структура каталогов 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

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню