internetpixels / event-manager

本包的最新版本(1.0.0)没有提供许可证信息。

使用此PHP库在您的应用程序中处理事件

1.0.0 2018-01-02 16:19 UTC

This package is auto-updated.

Last update: 2024-09-16 16:29:04 UTC


README

使用此PHP库在您的应用程序中处理事件和触发器。无需担心监听器的正确钩接时间,只需简单设置优先级。

这是一个开源库。当您积极使用它时,请考虑添加此仓库的链接。

License Build Status Maintainability

安装

使用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',
] );