php钩子
<?php //统一对外的类 class Hook{ private $hooklist = null; //感觉这里很像观察者模式或者是策略模式 public function add($action_hook){ $this->hooklist[]=new $action_hook(); } //触发事件 public function exec(){ foreach($this->hooklist as $action_hook){ $action_hook->act();//钩子中统一的方法 } } } //不同用途的钩子具体对象,比如说验证密码,验证权限,统一加密等等, class action_hook_1{ public function act(){ echo "我来做第一件事"; } } class action_hook_2{ public function act(){ echo "我来做第2件事"; } } class action_hook_3{ public function act(){ echo "我来做第3件事"; } } //需要绑定钩子的具体对象 class Ball{ public function down(){ echo '我需要做一些通用的验证工作'; //注册事件,这里就可以加载相应的钩子类,因为在一个文件,直接使用 $hook = new Hook(); $hook->add("action_hook_1"); $hook->add("action_hook_2"); $hook->add("action_hook_3"); $hook->exec(); } //淡然也可以注册完就直接执行钩子,也可以写到单独方法 public function exec(){ } } $ball = new Ball(); $ball->down();
今天想搞清楚钩子是什么,大概看了看,有一个地方实在是看不明白,
public function add($action_hook){ $this->hooklist[]=new $action_hook(); }
直接$action_hook过来的值前面加new 后面加(),就可以建对象了?就算是字符串连接也应该是$action_hook."()"吧?
寅春树:爱设计,爱前端,更爱程序
QQ:41676015