myth / events
该软件包已被废弃且不再维护。未建议替代软件包。
一个简单、快速且灵活的PHP事件发布/订阅系统,具有事件优先级。
dev-master
2015-06-25 05:05 UTC
Requires
- php: >=5.4
This package is auto-updated.
Last update: 2022-04-08 04:24:12 UTC
README
此库在PHP中提供了一个非常简单但功能强大的事件系统。它遵循发布/订阅模式,并使用配置文件存储所有事件监听器,以减少任何潜在的耦合。
配置
此库要求服务器上存在一个文件,其中包含事件监听器的配置。必须在实例化类时将此文件的路径作为唯一参数传入。事件监听器的定义如下所述。
$events = new \Myth\Events\Events( 'path/to/config.php' );
该文件将在实例化类的整个生命周期中只读取一次,并且在调用类的方法之前不会加载。
触发事件
您可以通过在类上调用 trigger()
方法来触发事件。第一个参数是要触发的事件的名称。这个名字可以是您想要的任何内容。唯一的要求是监听器要监听相同的名称。
$events->trigger('new_user');
如果您想向监听器传递数据,以便他们可以进行处理,可以将数据项的数组作为第二个参数传递。
$events->trigger('new_user', [$user, $role] );
取消监听器执行
一旦事件被触发,监听器将被按优先级排序并依次运行,优先级高的监听器先运行。
您可以通过从任何监听器中返回 false
来强制停止剩余监听器的执行。
监听事件
监听事件简单地说就是告诉事件类,当该事件被触发时,您希望被告知,并且您希望有机会在那个时刻做些什么。这对于发送电子邮件、检查用户授权等非常有用。
您可以使用 on()
方法在配置文件中定义监听器。第一个参数是要运行的事件的名称。第二个参数是任何可调用的函数,但通常是闭包。
$events->on('new_user', function ($user, $role) {
Mail::queue('new_user_email', $user);
});
您可以通过指定监听器的优先级作为第三个参数来定义事件的执行顺序。优先级可以是任何整数。数字越小,优先级越高。
$events->on('new_user', function ($user, $role) {
Mail::queue('new_user_email', $user);
}, 10);
如果您不需要指定任何精细的顺序,可以使用三个预定义的值。
EVENTS_PRIORITY_LOW = 200
EVENTS_PRIORITY_NORMAL = 100
EVENTS_PRIORITY_HIGH = 10