entanet / pub-sub-event
为Laravel事件包装器,使得发布事件无需使用监听器。
dev-master
2018-09-27 07:43 UTC
Requires
- php: >=7.2.0
- illuminate/support: ^5.6
- superbalist/laravel-pubsub: ^3.0
This package is auto-updated.
Last update: 2024-09-29 05:08:31 UTC
README
为Laravel事件包装器,使得外部发布事件无需使用监听器。
先决条件
- Laravel 5.6+
- superbalist/laravel-pubsub 3.0+
安装
在您的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编码的事件对象。