事件(完结篇)
代码完成后,需要增加新功能,事件 与 监听器 其实是一个类,需要让该类以及其中方法在 原来已经存在的程序中间的一个地方执行。
事件也可以说是一种预留手段,根据你的经验在需要的地方 埋点,方便之后 打补丁
- src/Event/Listener
- 在Application类中进行注册registerBaseServicProvider()中
源码见个人git https://github.com/mafa1993/slaravel
<?php
//用于事件存储
namespace Slaravel\Event;
class Event
{
protected $listener; //如果多个监听器,只会记录最后一个
protected $events; //记录所有
public function listener($listener,$callback){
$this->listener = strtolower($listener);
$this->events[$listener] = [$callback];
}
/**
* 分发执行
* @param $listener
* @param array $param
* @return bool
*/
public function dispatch($listener,$param = []){
$listener = strtolower($listener);
if($this->events[$listener]){
($this->events[$listener][0])(...$param);
return true;
}
}
}
namespace Slaravel\Event;
use Slaravel\Foundation\Application;
class Listener
{
protected $name = 'listener';
protected $app;
public function __construct(Application $app)
{
$this->app = $app;
}
public function handle(){}
public function getname(){
return $this->name;
}
}
网友评论