architectnate/triggr-php

简单的PHP事件处理器

v1.0 2015-08-21 07:37 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:47:29 UTC


README

一个轻量级的PHP事件处理系统。

Packagist Build Status Dependency Status codecov.io Packagist

该系统允许您设置事件和事件处理器,触发事件并控制事件流。这是为开发人员添加事件钩子到软件的绝佳方式。

注意:这不是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));