socarrat/events

简单的事件/钩子系统。适用于所有类型的PHP项目。

v0.1.0 2023-05-04 16:17 UTC

This package is auto-updated.

Last update: 2024-09-04 19:28:22 UTC


README

Socarrat事件库包含了事件派发器的基类。它旨在既快速又简单,同时也灵活和可扩展。

安装

您可以通过运行composer require socarrat/events通过Composer安装此包。库将在Socarrat\Events命名空间下可用。

概念

这个包的核心是事件

想象你在一艘小船上在公海上,你不知道自己在哪里。幸运的是,你有一些烟火。它们被附近的一艘船看到了,你获救了。

这种迷路是事件的隐喻:某种情况出现了。当你点燃烟火时,你就触发了或派发了事件。由于已经设置了钩子或事件监听器,烟雾被注意到了。当事件监听器的回调(看到你呼救的人)被执行时,就会执行动作(获救)。

用法

创建事件

为了创建事件,你需要扩展抽象类Event。重要的是要重写$listeners属性。

例如

use Socarrat\Events\Event;

class YourCustomEvent extends Event {
	static protected array $listeners;
}

不再需要其他东西!当然,你可以扩展事件以拥有自定义方法和属性。

监听事件

要注册事件监听器,你必须调用on方法。闭包会在事件被派发时被调用。

第一个参数是排序顺序。顺序较低的钩子会被先调用。此方法返回分配给钩子的索引。它可能比你提供的索引要高。在这种情况下,之前的索引已被占用。

YourCustomEvent::on(1, function() {
	echo "Hi!";
});

派发事件

调用dispatch方法来派发事件

YourCustomEvent::dispatch();

传递给此方法的参数会传递给所有事件监听器,这样你可以提供特定上下文的信息。

API

抽象类Socarrat\Events\Event

static protected $listeners

一个事件监听器(闭包)数组,当事件被派发时调用。

重要的是你必须在自己的实现中重写这个属性!

static function getName(): string

返回事件的名称。

static function on(int $priority, $callback): int

为当前事件注册事件监听器。返回分配给监听器的索引。

static function dispatch(...$callbackData)

派发事件。这将按顺序执行所有注册的回调,并将可选的回调数据传递给它们。

警告:这是一个阻塞函数;它将在所有回调完成之前停止执行。回调是同步执行的。

版权

(c) 2023 Romein van Buren。根据MIT许可证授权。

有关完整的版权和许可信息,请参阅与源代码一起分发的license.md文件。license.md