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 事件。