1. Начало работы
  2. Структура директорий

Присоединяйся к нашему Telegram сообществу @webblend!

Здесь ты найдешь сниппеты по Laravel и полезные советы по веб-разработке.

Введение

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

Примечание Новичок в Laravel? Ознакомьтесь с Laravel Bootcamp для практического тура по фреймворку, пока мы расскажем вам, как создать свое первое приложение Laravel.

Корневая директория

Директория 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 помещает в группу промежуточного программного обеспечения web, предоставляющую состояние сеанса, защиту от CSRF и шифрование cookie. Если ваше приложение не предлагает бесстранного RESTful API, то все ваши маршруты, скорее всего, будут определены в файле web.php.

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

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

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

Директория Storage

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

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

Директория Tests

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

Директория Vendor

Директория vendor содержит ваши зависимости Composer.

Директория app

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

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

Различные дополнительные директории будут создаваться внутри директории app, по мере использования команд Artisan make для создания классов. Например, директория 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. Включенная в Laravel ORM предоставляет красивую, простую реализацию ActiveRecord для работы с вашей базой данных. У каждой таблицы в базе данных есть соответствующая "модель", которая используется для взаимодействия с этой таблицей. Модели позволяют выполнять запросы к данным в ваших таблицах, а также вставлять новые записи в таблицу.

Директория Notifications

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

Директория Policies

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

Директория Providers

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

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

Директория Rules

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