webman event
1.0.0
تتمثل ميزة الأحداث مقارنة بالبرمجيات الوسيطة في أن الأحداث يتم وضعها بشكل أكثر دقة (أو أكثر تفصيلاً) من البرامج الوسيطة، وأكثر ملاءمة لتوسيع بعض سيناريوهات الأعمال. على سبيل المثال، عادة ما نواجه مستخدمين يحتاجون إلى إجراء سلسلة من العمليات بعد التسجيل أو تسجيل الدخول. من خلال نظام الأحداث، يمكننا إكمال توسيع عملية تسجيل الدخول دون غزو الكود الأصلي، الأمر الذي لا يقلل من اقتران النظام فحسب، بل كما يقلل من احتمال BUG .
composer require tinywan/event
الحدث LogErrorWriteEvent.php
namespace extend ;
use Symfony Contracts EventDispatcher Event ;
class LogErrorWriteEvent extends Event
{
const NAME = ' log.error.write ' ; // 事件名,事件的唯一标识
public $ log ;
public function __construct ( array $ log )
{
$ this -> log = $ log ;
}
public function handle ()
{
return $ this -> log ;
}
}
الاستماع للحدث
return [
// 事件监听
' listener ' => [
extend LogErrorWriteEvent:: NAME => extend LogErrorWriteEvent::class,
extend DingTalkEvent:: NAME => extend DingTalkEvent::class,
],
];
LoggerSubscriber.php
namespace extend ;
use Symfony Component EventDispatcher EventSubscriberInterface ;
use Symfony Contracts EventDispatcher Event ;
class LoggerSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents (): array
{
// 监听的不同事件,当事件触发时,会调用 onResponse 方法
return [
extend LogErrorWriteEvent:: NAME => ' onResponse ' ,
extend DingTalkEvent:: NAME => ' onResponse ' ,
];
}
/**
* @desc: 触发事件
* @param Event $event
*/
public function onResponse ( Event $ event )
{
// 一些具体的业务逻辑
var_dump ( $ event -> handle ());
}
}
اشتراك الحدث
return [
// 事件订阅
' subscriber ' => [
extend LoggerSubscriber::class
],
];
قم بتشغيل الحدث LogErrorWriteEvent
.
$ error = [
' errorMessage ' => '错误消息' ,
' errorCode ' => 500
];
Tinywan Event:: trigger ( new extend LogErrorWriteEvent ( $ error ), extend LogErrorWriteEvent:: NAME );
$ error = [
' errorMessage ' => '错误消息' ,
' errorCode ' => 500
];
event ( new extend LogErrorWriteEvent ( $ error ), extend LogErrorWriteEvent:: NAME );
نتيجة التنفيذ
هذا المشروع مرخص بموجب ترخيص Apache 2.0.