Структура

Содержание:


Введение

Типовая страктура приложения Ларавел обеспечивает превосходную отправную точку для приложений любого размера. Вместе с тем вы можете организовывать структуру приложения так, как вы считаете нужным. 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. Папка содержит пользовательские правила валидации для вашего приложения. Правила используются для того, чтобы инкапсулировать сложную логику в простой объект. Всю информацию можно узнать в разделе валидация.