entanet / pub-sub-event

为Laravel事件包装器,使得发布事件无需使用监听器。

dev-master 2018-09-27 07:43 UTC

This package is auto-updated.

Last update: 2024-09-29 05:08:31 UTC


README

为Laravel事件包装器,使得外部发布事件无需使用监听器。

先决条件

安装

在您的Laravel项目中运行以下命令来安装库

    composer require entanet/pub-sub-event

注册服务提供者

要将PubSubEventProvider添加到服务提供者数组中,请将以下行添加到Laravel的config/app.php文件中

    'providers' => [
    ...
    \Entanet\PubSubEvent\PubSubEventServiceProvider::class
    ...

为发布/订阅事件添加别名

要添加别名到外观,请将以下内容添加到Laravel的config/app.php文件中的alias数组中

    'aliases' => [
    ...
    'PubSubEvent' => \Entanet\PubSubEvent\PubSubEventFacade::class,
    ...
    

您还可以更改当前的事件别名,以便任何当前的事件调用都使用发布/订阅事件

更改

    'aliases' => [
    ...
    'Event' =>  Illuminate\Support\Facades\Event::class,
    ...
    

    'aliases' => [
    ...
    'Event' => \Entanet\PubSubEvent\PubSubEventFacade::class,
    ...
    

覆盖Laravel全局助手事件

Laravel自带一个全局助手event,它分发给定的事件,因此您无需使用外观。如果您想使用发布/订阅事件覆盖该助手,您需要在vendor/autoload.php之前require PubSubEventHelper.php文件。以下是一个示例,修改Laravel 5.6的public/index.php文件

      // PubSubEventHelper.php is used to override the laravel global event helper.
       require __DIR__.'/../vendor/entanet/pub-sub-event/src/PubSubEventHelper.php';
       require __DIR__.'/../vendor/autoload.php';
    

通过别名/外观使用发布/订阅事件

从外观调用dispatch,并提供包含事件数据和主题(new \App\Events\PubEvent($data, 'topic_name')的事件对象

    PubSubEvent::dispatch(new \App\Events\PubEvent($data), 'topic_name'); 

或者如果您已更改现有Event别名

    Event::dispatch(new \App\Events\PubEvent($data), 'topic_name'); 

通过事件全局助手使用发布/订阅事件

如果您已覆盖全局助手

    event(new \App\Events\PubEvent($data), 'topic_name');

发布/订阅事件对主题做了什么?

发布/订阅事件会检查主题是否存在,如果存在则发布json编码的事件对象。