Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Laravel: serviceprovider, register, boot

Что такое AppServiceProvider / сервис-провайдеры в Laravel: зачем нужны, что можно делать?

Этот вопрос проверяет, понимаете ли вы жизненный цикл приложения Laravel и умеете ли регистрировать зависимости/настройки через сервис-провайдеры

Короткий ответ

Сервис-провайдеры в Laravel — это классы, где приложение регистрирует и настраивает свои сервисы. В них обычно есть методы register() и boot(): в register() добавляют привязки в контейнер (bind/singleton), а в boot() выполняют настройку после регистрации (например, макросы, политики, кастомные правила валидации). AppServiceProvider — базовый провайдер вашего приложения, который создаётся по умолчанию. Провайдеры помогают держать инициализацию проекта в одном месте и подключать функциональность модульно.

Длинный ответ

В Laravel почти всё подключается через сервис-провайдеры: фреймворк и пакеты “объявляют” свои сервисы именно так.

Определение

Определение: Service Provider — это точка входа для регистрации сервисов и конфигурации приложения в процессе загрузки Laravel.

Зачем нужны

  • Регистрация зависимостей в контейнере (чтобы потом внедрять их через DI).

  • Инициализация/настройка функционала (валидация, макросы, политики, наблюдатели и т.д.).

  • Интеграция пакетов: пакет добавляет провайдер — и Laravel узнаёт, что и как подключать.

Что обычно делают в register()

В register() размещают то, что регистрирует зависимости:

  1. bind() — создавать новый объект при каждом запросе из контейнера.

  2. singleton() — один объект на всё приложение (в рамках жизненного цикла).

  3. Мёрдж конфигов пакета: mergeConfigFrom(...) (если нужно).

Мини-пример:

public function register(): void
{
    $this->app->singleton(\App\Services\Clock::class, function () {
        return new \App\Services\Clock(/* ... */);
    });
}

Что обычно делают в boot()

В boot() размещают то, что настраивает систему после регистрации:

  • регистрация политик (Gate, Policy)

  • кастомные правила валидации

  • макросы для Collection, Str, Response

  • Model::observe(...) (наблюдатели)

  • настройка пагинации/локали/форматов

Пример кастомного правила:

use Illuminate\Support\Facades\Validator;

public function boot(): void
{
    Validator::extend('even', fn($attr, $value) => $value % 2 === 0);
}

Что такое AppServiceProvider

  • Это провайдер “по умолчанию” в вашем приложении (app/Providers/AppServiceProvider.php).

  • Туда часто кладут общие привязки и небольшие глобальные настройки.

  • Но крупные вещи лучше выносить в отдельные провайдеры (например, BillingServiceProvider), чтобы не превратить AppServiceProvider в свалку.

Краткий вывод

Сервис-провайдеры стоит использовать для всех “подключений” и инициализаций: привязки в контейнере делайте в register(), а настройку поведения фреймворка — в boot().

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Laravel

    Laravel

Ключевые слова

#serviceprovider

#register

#boot

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.