РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1321 of 1392 menu

Команда make:observer

Команда make:observer генерирует новый класс обозревателя в директории app/Observers. Обозреватель позволяет объединить все обработчики событий модели (создание, обновление, удаление и т.д.) в одном классе. Первым параметром команда принимает имя создаваемого обозревателя. Вторым необязательным параметром - имя модели, для которой создаётся обозреватель, чтобы автоматически сгенерировать методы для её событий.

Синтаксис

php artisan make:observer ObserverName [--model=ModelName]

Пример

Создадим обозреватель для модели User без автоматической привязки событий:

php artisan make:observer UserObserver

После выполнения команды в директории app/Observers будет создан файл UserObserver.php. В нём будут определены пустые методы для событий, которые можно заполнить логикой:

<?php namespace AppObservers; use AppModelsUser; class UserObserver { public function created(User $user): void { // Логика после создания пользователя } public function updated(User $user): void { // Логика после обновления пользователя } public function deleted(User $user): void { // Логика после удаления пользователя } } ?>

Пример

Создадим обозреватель с привязкой к модели Post, чтобы автоматически сгенерировать методы для её событий:

php artisan make:observer PostObserver --model=Post

Команда сгенерирует обозреватель с методами, соответствующими событиям модели Post:

<?php namespace AppObservers; use AppModelsPost; class PostObserver { public function creating(Post $post): void { // Действия перед созданием поста } public function created(Post $post): void { // Действия после создания поста } public function updating(Post $post): void { // Действия перед обновлением поста } public function updated(Post $post): void { // Действия после обновления поста } public function deleting(Post $post): void { // Действия перед удалением поста } public function deleted(Post $post): void { // Действия после удаления поста } } ?>

Для активации обозревателя его необходимо зарегистрировать в методе boot сервис-провайдера, например AppServiceProvider:

<?php namespace AppProviders; use Illuminate\Support\ServiceProvider; use AppModelsPost; use AppObserversPostObserver; class AppServiceProvider extends ServiceProvider { public function boot(): void { Post::observe(PostObserver::class); } } ?>

Пример

Рассмотрим практическое использование обозревателя для отправки уведомления администратору при создании нового поста:

<?php namespace AppObservers; use AppModelsPost; use IlluminateSupportFacadesLog; class PostObserver { public function created(Post $post): void { Log::info('New post created: ' . $post->title); // Отправка уведомления администратору // Notification::send($admins, new PostCreatedNotification($post)); } } ?>

Теперь при создании поста будет автоматически выполняться эта логика:

<?php use AppModelsPost; $post = new Post(); $post->title = 'New article'; $post->content = 'Content of the article'; $post->save(); // В логах появится запись: "New post created: New article" ?>

Результат выполнения кода:

"Post created successfully. Log entry added: New post created: New article"

Смотрите также

  • команда make:model,
    которая создаёт новую модель Eloquent
  • команда make:controller,
    которая создаёт новый контроллер
  • команда make:event,
    которая создаёт новое событие
  • команда make:listener,
    которая создаёт новый обработчик событий
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить