ClassCMS

执行流程

执行流程

如方法: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