执行流程
执行流程
如方法:test:read ,挂载了两个钩子 : test1:read , test2:read
当执行C('test:read')时;系统会先查询此方法上的钩子,依次执行各个钩子.
如test1:read 内部返回了数据(不包括null),则C('test:read')的执行结果为test1:read 返回的数据
如test1:read 不返回数据,则继续执行下一个钩子(test2:read)
执行完成所有钩子后,如果所有钩子都没返回数据,则执行方法本身test:read
参数修改
当钩子返回了数组,并且数组第一个元素(或数组键名class=应用方法名)时,传递的参数将会更改成钩子内返回的参数.
//test内的read方法
function read($file){
return file_get_contents($file);
}
//test1内的read方法
function read($file){
return array('class'=>'test:read','file'=>'2.txt');
//或
return array('test:read','2.txt');
}
如上述代码,当调用C('test:read','1.txt')时,因为挂载了钩子test1:read ,并且test1:read 返回了修改后的参数,实际读取的文件变更为了2.txt