Ответ
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],
];
Преимущества: Чистые модели, централизованное управление побочными эффектами, легкость тестирования логики, реагирующей на события.