Документация Laravel 10.x
Здесь ты найдешь сниппеты по Laravel и полезные советы по веб-разработке.
Структура типового приложения Laravel предназначена для обеспечения отличной отправной точки как для крупных, так и для небольших приложений. Однако вы вольны организовать свое приложение так, как вам удобно. Laravel почти не накладывает ограничений на то, где находится тот или иной класс - главное, чтобы Composer мог загрузить класс.
Примечание Новичок в Laravel? Ознакомьтесь с Laravel Bootcamp для практического тура по фреймворку, пока мы расскажем вам, как создать свое первое приложение Laravel.
app
Директория app
содержит основной код вашего приложения. Мы рассмотрим эту директорию более подробно в следующем разделе; однако почти все классы вашего приложения будут в этой директории.
Директория bootstrap
содержит файл app.php
, который загружает фреймворк. Эта директория также содержит директорию cache
, в которой находятся сгенерированные фреймворком файлы для оптимизации производительности, такие как файлы маршрутов и кэш-файлы служб. Как правило, вам не потребуется изменять файлы в этой директории.
Директория config
, как следует из названия, содержит все файлы конфигурации вашего приложения. Было бы отличной идеей прочитать все эти файлы и ознакомиться со всеми доступными вам опциями.
Директория database
содержит ваши миграции базы данных, фабрики моделей и сиды. По вашему желанию вы также можете использовать эту директорию для хранения базы данных SQLite.
Директория public
содержит файл index.php
, который является точкой входа для всех запросов, поступающих в ваше приложение и настраивает автозагрузку. Эта директория также содержит ваши ресурсы, такие как изображения, JavaScript и CSS.
Директория resources
содержит ваши представления, а также ваши необработанные, некомпилированные ресурсы, такие как CSS или JavaScript.
Директория 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
содержит ваши журналы, скомпилированные шаблоны Blade, сеансы на основе файлов, кэши на основе файлов и другие файлы, созданные фреймворком. Эта директория разделена на директории app
, framework
и logs
. Директорию app
можно использовать для хранения любых файлов, созданных вашим приложением. Директория framework
используется для хранения файлов и кэшей, созданных фреймворком. Наконец, директория logs
содержит файлы журналов вашего приложения.
Директорию storage/app/public
можно использовать для хранения файлов, созданных пользователями, таких как аватары профиля, которые должны быть общедоступными. Вы должны создать символическую ссылку на public/storage
, указывающую на эту директорию. Вы можете создать ссылку, используя команду Artisan php artisan storage:link
.
Директория tests
содержит ваши автоматизированные тесты. В предоставленных по умолчанию примерах используются PHPUnit юнит-тесты и тесты функциональности. Каждый класс теста должен заканчиваться словом Test
. Вы можете запустить свои тесты, используя команды phpunit
или php vendor/bin/phpunit
. Или, если вы хотите более подробное и красивое представление результатов тестов, вы можете запустить тесты, используя команду Artisan php artisan test
.
Директория 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
содержит все классы каналов вещания для вашего приложения. Эти классы создаются с использованием команды make:channel
. Эта директория не существует по умолчанию, но будет создана для вас при создании вашего первого канала. Чтобы узнать больше о каналах, ознакомьтесь с документацией по вещанию событий.
Директория Console
содержит все пользовательские команды Artisan для вашего приложения. Эти команды можно создавать с использованием команды make:command
. Эта директория также содержит ядро вашей консоли, в котором регистрируются ваши пользовательские команды Artisan, а также определяются ваши запланированные задачи.
Эта директория не существует по умолчанию, но будет создана для вас командами Artisan event:generate
и make:event
. Директория Events
содержит классы событий. События можно использовать для оповещения других частей вашего приложения о том, что произошло определенное действие, обеспечивая тем самым большую гибкость и разъединение.
Директория Exceptions
содержит обработчик исключений вашего приложения и также является хорошим местом для размещения любых исключений, выбрасываемых вашим приложением. Если вы хотите настроить, как ваши исключения регистрируются или визуализируются, вы должны изменить класс Handler
в этой директории.
Директория Http
содержит ваши контроллеры, промежуточное программное обеспечение и запросы. Почти весь функционал для обработки запросов, поступающих в ваше приложение, будет размещен в этой директории.
Эта директория не существует по умолчанию, но будет создана для вас, если вы выполните команду Artisan make:job
. Директория Jobs
содержит задачи, которые могут быть поставлены в очередь для вашего приложения. Задачи могут быть поставлены в очередь вашим приложением или выполняться синхронно в текущем жизненном цикле запроса. Задачи, которые выполняются синхронно в текущем запросе, иногда называются "командами", так как они представляют собой реализацию шаблона команд.
Эта директория не существует по умолчанию, но будет создана для вас, если вы выполните команды Artisan event:generate
или make:listener
. Директория Listeners
содержит классы, обрабатывающие ваши события. Слушатели событий получают экземпляр события и выполняют логику в ответ на событие. Например, событие UserRegistered
может быть обработано слушателем SendWelcomeEmail
.
Эта директория не существует по умолчанию, но будет создана для вас, если вы выполните команду Artisan make:mail
. Директория Mail
содержит все классы, представляющие электронные письма, отправляемые вашим приложением. Объекты электронной почты позволяют инкапсулировать всю логику построения письма в один простой класс, который можно отправить с использованием метода Mail::send
.
Директория Models
содержит все ваши классы моделей Eloquent. Включенная в Laravel ORM предоставляет красивую, простую реализацию ActiveRecord для работы с вашей базой данных. У каждой таблицы в базе данных есть соответствующая "модель", которая используется для взаимодействия с этой таблицей. Модели позволяют выполнять запросы к данным в ваших таблицах, а также вставлять новые записи в таблицу.
Эта директория не существует по умолчанию, но будет создана для вас, если вы выполните команду Artisan make:notification
. Директория Notifications
содержит все "транзакционные" уведомления, отправляемые вашим приложением, такие как простые уведомления о событиях, происходящих в вашем приложении. Возможности уведомлений Laravel абстрагируют отправку уведомлений через различные драйверы, такие как электронная почта, Slack, SMS или сохранение в базе данных.
Эта директория не существует по умолчанию, но будет создана для вас, если вы выполните команду Artisan make:policy
. Директория Policies
содержит классы политик авторизации для вашего приложения. Политики используются для определения, может ли пользователь выполнять данное действие с ресурсом.
Директория Providers
содержит все поставщики служб для вашего приложения. Поставщики служб загружают ваше приложение, привязывая службы в контейнер служб, регистрируя события или выполняя любые другие задачи для подготовки вашего приложения к входящим запросам.
В свежем приложении Laravel эта директория уже содержит несколько поставщиков. Вы вольны добавлять свои собственные поставщики в эту директорию при необходимости.
Эта директория не существует по умолчанию, но будет создана для вас, если вы выполните команду Artisan make:rule
. Директория Rules
содержит объекты пользовательских правил валидации для вашего приложения. Правила используются для инкапсуляции сложной логики валидации в простом объекте. Дополнительные сведения можно найти в документации по валидации.