Thinkphp源码library/think/Model.class.php。从源码中可以看出,当case 'fucntion'和case 'callback'是走的同一段处理代码。但是在最后一个判断,
if('function'==$val[4]) {
return call_user_func_array($val[1], $args);
}else{
return call_user_func_array(array(&$this, $val[1]), $args);
}
中上面是function的返回,下面是callback的返回。可以看到function直接调用的是名称为$val[1]的函数,也就是common/function.php里的函数。而callback,调用的对象内的同名函数。&$this传递的是本对象的引用,call_user_func_array会调用$this->$val[1]($args)。
/**
* 根据验证因子验证字段
* @access protected
* @param array $data 创建数据
* @param array $val 验证因子
* @return boolean
*/
protected function _validationFieldItem($data,$val) {
switch(strtolower(trim($val[4]))) {
case 'function':// 使用函数进行验证
case 'callback':// 调用方法进行验证