numesia / laravel-events
Laravel 包,帮助组件间发送事件
0.0.13
2022-10-03 13:05 UTC
Requires
- php: >=5.5.9
- guzzlehttp/guzzle: ^6.2 || ^7.2
README
Laravel 包,帮助组件间发送事件
此 Laravel 事件包是一个私有包,所以我们不能直接使用 composer 来 require 它,因此我们必须添加一个 vcs 仓库来告诉 composer 从哪个 URL 加载该包。
"repositories": [
{
"type": "vcs",
"url": "git@github.com:NUMESIA/NU_EVENT_LaravelPackage.git"
}
],
"require": {
"NUMESIA/laravel-events": "0.0.*"
},
完成此操作后,您需要将服务提供者添加到 app.php 配置文件中的 providers 数组中,如下所示
Numesia\NuEvent\Providers\NuEventServiceProvider::class,
接下来,同样在 app.php 配置文件中,在 aliases 数组下,您可能希望添加 NuEvent 门面。
'NuEvent' => Numesia\NuEvent\Facades\NuEvent::class,
然后发布配置
php artisan vendor:publish --provider="Numesia\NuEvent\Providers\NuEventServiceProvider" --tag=config
最后,您需要将 NUEVENT_TOKEN
键从 .env
文件中更改
NUEVENT_TOKEN=YourEventSecretKey
如何使用?
NuEvent 提供了一个全局函数 nuEvent(),帮助您轻松地将事件发送到其他组件
/**
* Send an event to components
*
* @param <string> $eventName The event name
* @param <string> $eventData The event data
* @param <mixed> $components The components
* @param <closure> $callback The callback
*/
function nuEvent($eventName, $eventData, $components = null, $callback)
$components 可以是一个字符串(bpm),一个数组 ['bpm', 'cms'] 或空,以广播到所有组件
如果您想执行相同的任务,也可以使用 Facade NuEvent
/**
* Emit event to component name
*
* @param <string> $componentName The component name
* @param <string> $eventName The event name
* @param <string> $eventData The event data
*/
NuEvent::emit($componentName, $eventName, $eventData)
/**
* Broadcast event to all components
*
* @param <string> $eventName The event name
* @param <string> $eventData The event data
*/
NuEvent::broadcast($eventName, $eventData)
/**
* Dispatch event to selected components
*
* @param <string> $eventName The event name
* @param <string> $eventData The event data
* @param <mixed> $components The components
*/
NuEvent::dispatch($eventName, $eventData, $components = null)
/!\ 当您发送事件时,NuEvent 会自动将后缀 'nuEvents:' 添加到您的事件名称中
示例
在这个示例中,我们将尝试从 book 发送事件到 bpm
BOOK 组件
我们只需要在某个地方添加此命令
nuEvent('book.ping', "Hello World", "bpm");
BPM 组件
我们应该创建一个监听器(别忘了将其添加到 EventServiceProvider 中)
- EventServiceProvider
//EventServiceProvider
protected $subscribe = [
'App\Listeners\NuEventSubscriber',
];
- NuEventSubscriber
// App\Listeners\NuEventSubscriber
<?php
namespace App\Listeners;
use App\Jobs\SendNotification;
class NuEventSubscriber
{
/**
* Listening ActivityWasAborted event
*/
public function onBookPing($event)
{
\Log::info($event);
}
/**
* Register listeners for the subscriber
*
* @param Illuminate\Events\Dispatcher $events
*/
public function subscribe($events)
{
$events->listen(
'nuEvents:book.ping',
'App\Listeners\NuEventSubscriber@onBookPing'
);
}
}