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