jemer / event-dispatcher
在项目运行时创建、管理、触发事件
dev-main
2023-08-30 22:08 UTC
This package is auto-updated.
Last update: 2024-09-30 02:05:24 UTC
README
在项目运行时创建、管理和触发事件
composer require jemer/event-dispatcher dev-main
添加事件
事件在创建时添加。
$manger = new Manager([ 'load', 'unload', 'before_render', 'after_render' ]);
这将添加 load
unload
before_render
after_render
事件,您可以将其连接起来。 注意您也可以添加自己的事件,并按照自己的意愿命名。
处理事件
事件可以通过闭包(Closure)或类(Class)来处理。
闭包
$manger->Register('load', function() { echo "this will run when the Load event get triggered"; });
类
<?php namespace Jemer\Test; use Jemer\EventDispatcher\ObserverBase; class TestObserver extends ObserverBase { public function Load() : void { // use this to load in any resources this observer will need // Load() will be called immediately before Run() echo "Load()"; } public function Run() : void { // run your code here echo "Run()"; } } ?>
当使用类来处理您的事件时,您必须使用 Load()
和 Run()
。使用 Load()
来加载您需要的任何资源,并使用 Run()
来处理事件。Load 在 Run 之前立即调用。当使用闭包时没有 Load()
。
触发事件
在您的项目中,当您需要触发事件,如 load
,只需
$manger->FireEvent('load');
这将触发 load
事件。