• Laravel Observer: руководство по отслеживанию событий
    Хотите заказать услугу прямо сейчас?

    Что такое Laravel Observer

    Laravel Observer: Полное руководство с примерами кода

    В Laravel Observer — это паттерн для отслеживания событий моделей. Он позволяет автоматически реагировать на создание, обновление, удаление или восстановление записи в базе данных. Использование Observer повышает читаемость кода и отделяет бизнес-логику от контроллеров.


    Observer в Laravel — это класс, который содержит методы, выполняемые при определённых событиях модели. Основные события:

    • created — после создания записи
    • updated — после обновления записи
    • deleted — после удаления записи
    • restored — после восстановления записи (soft delete)
    • saving / saved — до/после сохранения
    • updating / updated — до/после обновления

    Observer полезен для уведомлений, логирования, автоматического изменения данных или интеграции с внешними сервисами.


    Создание Observer

    Для создания Observer используйте Artisan-команду:

    php artisan make:observer UserObserver --model=User
    

    Эта команда создаст класс UserObserver в папке app/Observers и автоматически привяжет его к модели User.

    Пример Observer для модели User

    <?php
    
    namespace App\Observers;
    
    use App\Models\User;
    use Illuminate\Support\Facades\Log;
    
    class UserObserver
    {
        public function created(User $user)
        {
            Log::info('Создан новый пользователь: ' . $user->email);
        }
    
        public function updated(User $user)
        {
            Log::info('Пользователь обновлён: ' . $user->email);
        }
    
        public function deleted(User $user)
        {
            Log::warning('Пользователь удалён: ' . $user->email);
        }
    }
    

    Регистрация Observer

    Observer нужно зарегистрировать, чтобы Laravel знал о его существовании. Обычно это делают в App\Providers\EventServiceProvider:

    public function boot()
    {
        \App\Models\User::observe(\App\Observers\UserObserver::class);
    }
    

    После регистрации методы Observer будут автоматически вызываться при соответствующих событиях модели.


    Использование нескольких Observer

    Можно зарегистрировать несколько Observer для разных моделей:

    \App\Models\Post::observe(\App\Observers\PostObserver::class);
    \App\Models\Order::observe(\App\Observers\OrderObserver::class);
    

    Каждый Observer содержит только логику для своей модели.


    Observer и события модели

    Методы Observer совпадают с событиями Eloquent модели. Примеры событий:

    • retrieved — при получении модели
    • creating / created
    • updating / updated
    • deleting / deleted
    • restoring / restored

    Вы можете использовать любые события для выполнения нужной логики.


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

    use App\Models\User;
    use App\Notifications\WelcomeNotification;
    
    class UserObserver
    {
        public function created(User $user)
        {
            $user->notify(new WelcomeNotification());
        }
    }
    

    Таким образом, уведомление отправляется автоматически сразу после создания пользователя, без дублирования кода в контроллере.


    Soft Delete и Observer

    Если модель использует Soft Delete (use SoftDeletes;), доступны события:

    • deleted — вызывается при soft delete
    • restored — при восстановлении записи

    Пример логирования удаления и восстановления:

    public function deleted(User $user)
    {
        Log::warning("Пользователь {$user->email} помечен как удалённый");
    }
    
    public function restored(User $user)
    {
        Log::info("Пользователь {$user->email} восстановлен");
    }
    

    Очереди и Observer

    Observer может вызывать уведомления или задачи в очереди для асинхронной обработки:

    public function created(User $user)
    {
        dispatch(function() use ($user) {
            // сложная обработка, отправка email или API
        })->delay(now()->addMinutes(1));
    }
    

    FAQ — Часто задаваемые вопросы

    1. Можно ли использовать Observer без модели?

    Нет, Observer привязан к конкретной модели. Для глобальных событий используйте Events/Listeners.

    2. Чем Observer отличается от Events/Listeners?

    Observer привязан к модели и реагирует на события Eloquent. Events/Listeners более гибкие и могут работать независимо от модели.

    3. Можно ли использовать несколько Observer для одной модели?

    Да, просто регистрируйте каждый Observer через Model::observe().

    4. Как тестировать Observer?

    Можно создавать мок-модель, вызывать методы сохранения и проверять, срабатывает ли логика Observer.

    5. Поддерживает ли Observer Soft Delete?

    Да, есть события deleted (soft delete) и restored.


    Вывод

    Laravel Observer позволяет чисто и централизованно управлять реакцией на события модели: создание, обновление, удаление, восстановление. Observer улучшает читаемость кода и упрощает поддержку приложения. Он совместим с уведомлениями, очередями и Soft Delete.

    Вам может быть интересным

    Laravel Notification: Полное руководство с примерами кода

    Посмотреть

    📰 Последние статьи

    Киберпреступность в 2026: как устроена теневая цифровая экономика

    Читать

    GitHub Copilot и “код из чужих проектов” — в чём скандал

    Читать

    Почему даже senior-разработчики иногда боятся обновлять Bitrix

    Читать

    1С-Битрикс снова подорожал: рынок это воспринял гораздо болезненнее, чем кажется

    Читать

    🚀 Можно ли написать сайт за 1 день: честный разбор с примерами

    Читать

    Разговор о взломе ВК и безопасности аккаунтов

    Читать

    Как защищают приложения в 2026: угрозы, архитектура и реальная безопасность

    Читать

    Чёрный список работодателей — почему программисты закрывают на него глаза в 2026 году

    Читать

    ИИ для программистов 1С: как искусственный интеллект меняет разработку в 1С

    Читать

    Я вообще хороший программист или просто умею гуглить?

    Читать

    Почему становятся программистами 💻

    Читать

    ИИ для программистов: как искусственный интеллект меняет разработку в 2026 году

    Читать

    Жаргон программистов: как они разговаривают и почему это звучит как заклинания

    Читать

    🚨 Почему ломается сайт: полный разбор с примерами кода

    Читать

    Дорама «Милашка-программист» — честный разбор от программиста

    Читать

    🤖 Заменит ли ИИ программистов: полный разбор будущего профессии

    Читать

    🔐 Почему компании переходят на Zero Trust: новая модель безопасности в 2026 году

    Читать

    Какие книги читать программисту с нуля — дружеский обзор без скучной теории

    Читать

    Почему одни разработчики зарабатывают $100, а другие $10 000

    Читать

    Что будет, если отключат интернет: полный разбор последствий

    Читать

    «Не заставляйте меня думать» — Стив Круг: разбор книги, идеи и честная критика

    Читать

    Что сдавать на программиста после 9 класса в 2026 году

    Читать

    Комментарии (0)

    Оставить комментарий

    Кейсы компании

    Кейс: создание кастомной корзины на 1С‑Битрикс с лицензией «Стандарт»

    Посмотреть

    Кастомная система комментариев WordPress с микроразметкой и AJAX

    Посмотреть

    Как создать компонент в Битрикс 1С, который изменяет цену на китайские юани

    Посмотреть

    🎯 Кейс Павлов Студио: как мы внедрили Яндекс SmartCaptcha для защиты всех форм сайта (включая Bitrix)

    Посмотреть

    Разработка онлайн-калькулятора для товаров на сайте wp

    Посмотреть

    Обновление сайта с битрикс 1с с версии php 5.6 до 8.2

    Посмотреть

    Разработка сервиса для сбора информации из соц.сети «Вконтате»

    Посмотреть

    Разработка мега-меню для сайта на wordpress https://doma-penoblok.ru/

    Посмотреть

    Разработка и сопровождение сайта  https://aaa-sitrak.ru/ с последующей интеграцией на 1с-битрикс

    Посмотреть

    Разработка интернет-магазина https://sklad38.ru/ на битрикс 1с

    Посмотреть

    Доработка сайта https://tochka-kontakta.ru/ для организации «Точка Контакта»

    Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите ее, затем начинайте создавать!

    Посмотреть
    Max Messenger