<?php
/**
 * Link         :   http://www.phpcorner.net
 * User         :   qingbing<780042175@qq.com>
 * Date         :   2018-10-27
 * Version      :   1.0
 */

namespace Test;

use TestClass\DemoBase;
use TestCore\Tester;

/**
 * Class Core
 * @package Test
 */
class TestEvent extends Tester
{
    /**
     * 执行函数
     * @return mixed|void
     * @throws \Helper\Exception
     */
    public function run()
    {
        // Base类实例化
        $demo = new DemoBase();
        // 判断事件名称是否存在
        var_dump($demo->hasEvent('end'));
        var_dump($demo->hasEvent('login'));

        // 添加事件句柄
        $demo->attachEventHandler('beforeLogin', function ($event) {
            var_dump('before login');
        });
        $demo->attachEventHandler('afterLogin', function ($event) {
            var_dump('after login1');
        });
        $handler = function ($event) { // 定义事件句柄
            var_dump('after login2');
            var_dump($event);
        };
        $demo->attachEventHandler('afterLogin', $handler);
        // 移除事件句柄
        $demo->detachEventHandler('afterLogin', $handler);

        // 调用函数，触发事件句柄
        $demo->login();
    }
}