Что такое Observer в Laravel?

«Что такое Observer в Laravel?» — вопрос из категории Laravel, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Observer в Laravel — это класс, который прослушивает события жизненного цикла модели Eloquent (создание, обновление, удаление) и позволяет выносить побочную логику из самой модели, соблюдая принцип единственной ответственности (SRP).

Типичные сценарии использования:

  • Отправка уведомлений (email, push) после создания пользователя.
  • Очистка кэша при обновлении статьи.
  • Ведение логов аудита или мягкое удаление связанных записей.

Создание и регистрация Observer:

php artisan make:observer UserObserver --model=User

Код Observer (app/Observers/UserObserver.php):

<?php

namespace AppObservers;

use AppModelsUser;
use AppNotificationsWelcomeNotification;

class UserObserver
{
    public function created(User $user): void
    {
        // Отправляем приветственное письмо асинхронно через очередь
        $user->notify(new WelcomeNotification());
    }

    public function updating(User $user): void
    {
        // Логируем, кто и когда изменил запись
        $user->last_updated_by = auth()->id();
    }

    public function deleted(User $user): void
    {
        // Мягко удаляем связанные профили
        $user->profile()->delete();
    }
}

Регистрация в AppProvidersEventServiceProvider:

protected $observers = [
    User::class => [UserObserver::class],
];

Преимущества: Чистые модели, централизованное управление побочными эффектами, легкость тестирования логики, реагирующей на события.