internetpixels / event-manager
本包的最新版本(1.0.0)没有提供许可证信息。
使用此PHP库在您的应用程序中处理事件
1.0.0
2018-01-02 16:19 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is auto-updated.
Last update: 2024-09-16 16:29:04 UTC
README
使用此PHP库在您的应用程序中处理事件和触发器。无需担心监听器的正确钩接时间,只需简单设置优先级。
这是一个开源库。当您积极使用它时,请考虑添加此仓库的链接。
安装
使用composer安装此PHP事件管理器
composer require internetpixels/event-manager
基本示例
注册事件
在您能够使用新事件之前,您需要注册它。在您的应用程序中找到一个合理的位置,最好是在运行时开始的地方。
在添加任何监听器之前,必须先注册事件,否则此库将抛出异常!
$eventManager = new EventManager();
$event = new EventEntity();
$event->setKey( 'test.event.after.post' );
$eventManager->registerEvent( $event );
注册监听器
事件添加后,您可以“挂钩”新的监听器到事件。这意味着,当事件被触发时,它将调用所有具有给定优先级的触发器。
优先级1是最重要的,默认优先级是50。事件管理器会自动对监听器进行排序,因此添加监听器到事件管理器的顺序并不重要。
监听器只能有1个必需的回调方法。此方法将在事件执行时被调用。
$listener = new EventListenerEntity();
$listener->setEventKey( 'test.event.after.post' );
$listener->setPriority( 20 );
$listener->setCallback( [ $this, 'eventCallback' ] );
$eventManager->registerListener( $listener );
回调示例
每个监听器都有一个回调方法,在您的应用程序中,基本回调方法可能如下所示。您应该接收到$params
数组,并将它们作为数组返回以供进一步使用。
public function eventCallback( $params = null ) {
// TODO: Do something with the parameters
var_dump($params);
return $params;
}
执行事件
当您的事件和至少一个监听器设置完成后,您可以在应用程序中执行事件。这将触发所有具有给定优先级的监听器。
$eventManager->executeEvent( 'test.event.after.post' )
将事件用作过滤器
您可以使用事件作为过滤器。注册过程几乎与正常事件相同,您只需在事件注册时启用参数,并在executeEvent
方法中添加它们。
executeEvent
方法将返回参数。
$event = new EventEntity();
$event->setParams( true );
$event->setKey( 'test.event.after.post' );
$eventManager->registerEvent( $event );
$executed = $eventManager->executeEvent( 'test.event.after.post', [
'first parameter value',
] );
var_dump( $executed );
现在参数可在事件回调$params
数组中使用。
执行中的多个参数
在执行过程中添加更多参数非常简单。只需在执行方法中添加新的数组值。
$executed = $eventManager->executeEvent( 'test.event.after.post', [
'first parameter value',
'second parameter value',
'third parameter value',
] );