Структура
Содержание:
Введение
Типовая страктура приложения Ларавел обеспечивает превосходную отправную точку для приложений любого размера.
Вместе с тем вы можете организовывать структуру приложения так, как вы считаете нужным. Laravel не накладывает
ограничений на то, откуда подгружается класс, если он может быть добавлен автозагрузкой Composer.
Где папка "Модели"?
Многие разработчики, начиная работать с Laravel не могут найти директорию models
.
По умолчанию, такой директории нет. Мы решили отказаться от такой папки в силу того, что разные люди накладывают
на эту папку совершенно разные смыслы. Одни разработчики ассоциируют модель с бизнес-логикой, в то время как другие
воспринимают модель как набор классов для взаимодействия с базой данных.
Поэтому модели Eloquent располагаются в папке app
по умолчанию. Но можно расположить модели
в любом другом месте на ваш выбор.
Корневой каталог
Папка App
Папка app
содержит ядро вашего приложения. Почти все классы вашего приложения располагаются в
этой папке. Позже будут дана более подробная детализация содержимого папки.
Папка Bootstrap
Папка bootstrap
содержит файл app.php
, который загружает фреймворк.
Эта папка также содержит директория cache
, которая содержит файлы сгенерированные фрейворком,
которые служат для оптимизации загрузки, например, файлов маршрутов.
Папка Config
Папка config
содержит в себе файлы конфигурации.
Отличная идея просмотреть каждый из файлов, чтобы ознакомитсья со всеми доступными опциями.
Папка Database
Эта директория содержит миграции базы данных, фабрики и файлы для заполнения бд данными.
Также вы можете хранить здесь базы данных SQLite
Папка Public
Папка public
содержит файл index.php
, который является точкай входа всех запросов.
Эта папка также содержит изображения, файлы CSS и JavaScript.
Папка Resources
Папка resources
содержит представления, не собранные файлы LESS, SASS, или JavaScript.
В этой папке также располагаются и другие языковые файлы.
Папка Routes
Папка routes
содержит все маршруты вашего приложения.
По умолчанию, включены следуюжие файлы: web.php
, api.php
,
console.php
и channels.php
.
Файл web.php
содержит маршруты, которые RouteServiceProvider
располагает в
промежуточном слое группы web
. Если RESTful API не предусмотрено для вашего приложения,
то скорее всего все маршруты будут располагаться именно в файле web.php
.
Файл api.php
содержит маршруты, которые RouteServiceProvider
размещает в
промежуточном слое в группе api
, которые наклюдывают ограничения количества попыток в единицу
времени. Запросы, которые проходят через эти маршруты проходят аутентификацию через токены, и не будут
иметь доступ к сессии.
В файле console.php
вы можете определить все ваши команды для консоли, основанные на замыкании.
Каждое замыкание связано с экземпляром команды и предлагает простой подход для взаимодействия с методами
вводы-вывода для каждой команды.
Этот файл не определяет маршруты HTTP, а определяет основанные на консоли точки входа для вашего приложения.
В файле channels.php
вы можете зарегистрировать все каналы вещания,
которые поддерживает ваше приложение.
Папка Storage
Каталог storage
содержит собранные шаблоны Blade, сессии на основе файлов, кэш файлов и другие
файлы сгенерированные фреймворком. Каталог storage
разделяется на 3 папки: 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
. По умолчанию,
установлено пространство имён 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
.
Здесь располагаются события приложения, которые используются как оповещения для других частей вашего
приложения о том, что произошло событие. Это даёт большую гибкость.
Папка Exceptions
Папка Exceptions
содержит обработчик исклюдчений вашего приложения. Также это отличное место
для хранения любых исключений вашего приложения. Если вы хотите настроить работу исключения, то вы должны
внести измения в класс Handler
.
Папка Http
Папка Http
содержит контроллеры, проможуточный слой, и запросы форм.
Вся логика обработки запросов для вашего приложения будут располагаться в этой папке.
Папка Jobs
Эта папка не существует по умолчания, но будет создана после того,
как вы выполните команду Artisan make:job
. Эта папка хранит в себе
очереди заданий для вашего приложения.
Задания могут выполняться поочерёдно или синхронно в течение жизни запроса.
Те задания, которые выполняются в течение цикла запроса упоминаются как "команды", поскольку они являются
реализацией command pattern.
Папка Listeners
Директория не существует по умолчанию, но будет создана если вы волните команду event:generate
или make:listener
. Папка Listeners
содержит классы, которые обрабатывают события.
Слушатели события получают экземпляр события и выполняют логику в ответ на событие. Например, событие
UserRegistered
может быть обработанной слушателем SendWelcomeEmail
.
Папка Mail
Эта директория не существует по умолчанию, но может быть создана если вы выполните Artisan команду
make:mail
. Директория Mail
содержит все ваши классы, которые представляют
сообщения электронной почты, отправленную вашим приложением. Объекты почты позволяют инкапсулировать
всю логику построения электронной почты в одном простом классе, который может быть отправлен используя
метод Mail::send
.
Папка Notifications
Не существует по умолчанию, но будет создана, если вы выполните команду Artisan make:notification
,
Хранит все транзакционные уведомления, которые отсылаются приложением, как простое уведомление
о случившемся событии в вашем приложении. Уведомления Ларавел высылаются для любого драйвера,
будь то электронные письма, Slack, SMS или те, которые располагаются в базе данных.
Папка Policies
Не существует по умолчанию, появляется после выполнения Artisan команды make:policy
.
Директория содержит классы политики авторизации для вашего приложения.
Политика используется для того, чтобы определить какими правами и действиями оперировать пользователь для
данного ресурса. Полную информацию можете прочитать в разделе
authorization documentation.
Папка Providers
Папка Providers
содержит все
сервис провайдеры для вашего приложения.
Сервис провайдеры загружают ваше приложение путём привязывания сервисов в сервис контейнер, регистрирует
события или выполняет другие задачи, чтобы приготовить приложения для входящих запросов.
В свежей установке Ларавел, это папка будет содержать некоторые провайдеры. Вы можете легко добавить свои
контайнеры в эту папку если потребуется.
Папка Rules
Не существует по умолчанию, но будет создана если выполить команду Artisan make:rule
.
Папка содержит пользовательские правила валидации для вашего приложения. Правила используются для того, чтобы
инкапсулировать сложную логику в простой объект. Всю информацию можно узнать в разделе
валидация.