InitPHP (A PHP Framework) 用户手册
第5章 5.2 Hook插件机制

Hook插件使用说明:

InitPHP框架的Hook机制配置文件:

/**
 * 插件Hook配置
 * 1. 如果你需要使用InitPHP::hook() 钩子函数来实现插件功能
 * 2. 详细查看钩子的使用方法
 */
$InitPHP_conf['hook']['path']          = 'library/hook'; //插件文件夹目录, 不需要加'/'
$InitPHP_conf['hook']['class_postfix'] = 'Hook'; //默认插件类名后缀
$InitPHP_conf['hook']['file_postfix']  = '.hook.php'; //默认插件文件名称
$InitPHP_conf['hook']['config']        = 'hook.conf.php'; //配置文件

钩子函数使用InitPHP::hook('钩子名称', '传递的参数'):

class indexController extends Controller {
	
	public $initphp_list = array('test'); 
	
	public function run() {
		InitPHP::hook('guest', 'Hook'); //放置一个guest名称的钩子,传递的参数为Hook
		$this->view->set_tpl('test'); //设置一个test.htm的模板页面
		$this->view->display(); //模板显示
	}
	
	/**
	 * @return testService
	 */
	private function getTestService() {
		return InitPHP::getService('test','test');
	}

}

Hook自身的钩子挂载配置文件hook.conf.php:

/*
 *  钩子名称 => array(array('挂钩上对应的类名称', '函数名称')) 一个挂钩多个函数
 *  钩子名称 => array(挂钩上对应的类名称,函数名称) //一个挂钩一个钩子函数
 */
return array(
	//guest挂钩,InitPHP::hook('guest','Hook'); 在程序中放置钩子,guest钩子名称,Hook传递的参数
	'guest' => array( 
		array('test', 'run'), 
		array('test', 'aa')
	)
);

具体函数test.hook.php:

//一个测试的钩子
class testHook {
    public function run($data) {
  		echo '第一个简单的' . $data;
    }
	
	public function aa($data) {
		echo '
第二个简单的' . $data; } }