architectnate / triggr-php
简单的PHP事件处理器
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: 4.3
This package is not auto-updated.
Last update: 2024-09-28 19:47:29 UTC
README
一个轻量级的PHP事件处理系统。
该系统允许您设置事件和事件处理器,触发事件并控制事件流。这是为开发人员添加事件钩子到软件的绝佳方式。
注意:这不是ReactPHP等主要框架的替代品,而更多是作为其他框架和事件处理方便的情况下的补充工具。
安装
推荐通过composer安装Triggr(https://getcomposer.org.cn/)。在您的shell环境中输入以下命令
php ~/composer.phar require architectnate/triggr-php
使用方法
事件短语
使用TriggrPHP需要创建事件短语。本质上,事件短语是以以下格式的事件名称,可能包含或不含处理器名称:EventName:HandlerName(或仅EventName)。
这些事件短语用于创建事件。如果没有提供处理器名称,系统将自动创建一个。开发者可以选择包含处理器名称,以使其所做的工作更清晰。
触发事件
在构建应用程序时,您会使用“fire”方法来指定动作发生的位置,例如实体的预保存或后保存方法。事件短语仅包含事件名称,该事件的所有处理器都会被触发。
Triggr::fire("EventName");
如果您需要向事件提供用于其处理器的数据,您可以传递一个参数数组。
Triggr::fire("EventName", array($arg1, $arg2, $arg3));
如果需要在事件上触发特定处理器,可以使用fireHandler方法。这次事件短语必须包含事件名称和处理器名称。请注意,仍然可以传递参数。
Triggr::fireHandler("EventName:HandlerName", array($arg1));
监视事件
一旦事件在您的应用程序中触发,您可以“监视”它们并在它们触发时执行操作。为此,您将调用“watch”方法。每个“watch”都会创建一个处理器。如果您提供事件名称或完整的事件短语,TriggrPHP将为您分配处理器名称,或者不分配。没有必要为每个处理器分配自己的名称,但在更复杂的使用中这可能很有用。
要简单地监视一个事件,提供名称和操作。操作可以是任何可调用的函数,因此类方法和过程式方法都是可用的。
// With event name only Triggr::watch("MyEvent", function(){ echo "Event has fired!"; }); // With full event phrase (nameing the handler ourselves) Triggr::watch("MyEvent:FireMessage", function(){ echo "Event has fired!"; });
监视操作可以返回数据,fire方法将传递这些数据。由于每个事件可能有多个处理器,返回的数据按处理器运行的顺序提供,按数组形式排序。注意:“fireHandler”返回混合数据,无论“watch”操作返回什么,它都会返回,因为没有多个处理器的可能性。
Triggr::watch("HelloWorld", function(){ return "Hello World"; }); $output = Triggr::fire("HelloWorld"); // Returns array("Hello World")
选项
当监视事件时,可以提供选项给处理器,原因有二,限制其运行次数和设置排序或优先级。默认值:RunLimit = 0,Priority = 100(运行限制为0表示无限)。
Triggr::watch("HelloWorld", function(){ return "Hello World"; }, array("RunLimit"=>1, "Priority"=>101));