Рубрики
Uncategorized

Запись учебных заметок (мониторинг событий в Laravel)

Автор оригинала: David Wong.

Буквально говоря, это не что иное, как мониторинг события.

Сценарий логистической доставки: У меня есть небольшая программа для всех. Пользователям необходимо доставлять товары в фоновом режиме после размещения заказов. После доставки я хочу отправить уведомление о модуле, чтобы напомнить пользователям. Я думаю, что если пользователи не войдут в Wechat или не закроют запрос на сообщение, то будет невозможно сообщить пользователям, что товары были доставлены в режиме реального времени. Я решаю отправить его повторно. Добавьте короткое сообщение, чтобы проинформировать пользователя. С уведомлением о модуле я не думаю, что мне достаточно SMS-уведомления.. Затем я продолжаю добавлять.. Обычно мы пишем следующее:

php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class OrderController extends Controller
{
    public function sendGoods()
    {
        //@ todo: Delivery logic
        //@ todo: Modular Notification Logic
        //@ todo: Short Message Notification Logic
        //@ todo: Wait a minute.
    }
}

Это не невозможно написать таким образом, но с появлением все большего количества логических функций контроллер будет только раздуваться, и его будет нелегко поддерживать в дальнейшем. В это время некоторые люди могут сказать: “Тогда я могу инкапсулировать это, да, вы можете инкапсулировать это, а затем вы можете использовать шорткод для достижения этой цели”. Но в реальном проекте это будет связано с разработкой нескольких человек, что неудобно. Поэтому рекомендуется использовать ларавель собственный “мониторинг событий”…

3.1 Откройте терминал – > Перейдите в корневой каталог проекта – > Используйте команду artisan для создания файлов прослушивателя событий

php artisan make:event OrderEvent

После выполнения команды я обнаружил дополнительное событие заказа. PHP-файл в каталоге приложений/событий.

Мы можем открыть его и взглянуть на него.

Просто измените конструктор, потому что тогда мы сможем передать пользователя, который покупает товар.

user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

3.2 Обязательные События

Откройте приложение/Провайдеров/Службу мероприятий Provider.php файл и найдите атрибут участника слушайте:

    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
    ];

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

    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        'App\Events\OrderEvent' => [
            'App\Listeners\sendModel',
            'App\Listeners\sendPhone',
        ]
    ];

Затем откройте терминал и выполните команду artisan для создания файла прослушивания

php artisan event:generate

Затем мы можем найти еще два файла в файле app/Listeners.

Откройте два файла и измените их по очереди следующим образом:

sendModel.php:

 user; // @todo: current user
        //@ todo: Send message template logic
        Dump ('send message template successful');
    }
}

sendPhone.php:

 user; // @todo: current user
        //@ todo: Send SMS messages
        Dump ('Successful sending of SMS messages');
    }
}

3.3 Наконец, мы открываем OrderController.php чтобы прочитать:

3.4 Маршрутизация привязки

Route::get('/sendGoods','[email protected]');

3.5 Результаты Маршрутизации доступа:

Является ли это простым, легким в обслуживании, многое из этого не будет маленьким партнером, чтобы попробовать это! Если это вам полезно, пожалуйста, сделайте мне комплимент. Спасибо.