protected function _validationFieldItem($data,$val) { switch(strtolower(trim($val[4]))) { case 'function':// 使用函数进行验证 case 'callback':// 调用方法进行验证 $args = isset($val[6])?(array)$val[6]:array(); if(is_string($val[0]) && strpos($val[0], ',')) $val[0] = explode(',', $val[0]); if(is_array($val[0])){ // 支持多个字段验证 foreach($val[0] as $field) $_data[$field] = $data[$field]; array_unshift($args, $_data); }else{ array_unshift($args, $data[$val[0]]); } if('function'==$val[4]) { return call_user_func_array($val[1], $args); }else{ return call_user_func_array(array(&$this, $val[1]), $args); } 其中$val[6]应该就是规则的第七个参数,是array类型。 规则: // 自动验证设置 protected $_validate = array( array('title', 'checkTitle', '有个参数错误啦!', 1, 'callback', 3, array('654321')), ); public function checkTitle($arg1, $arg2) { if('123456' === $arg2) { return TRUE; } else { return FALSE; } } 也就是说,是可以传入多个参数的,就是在规则数组中加入第七个元素,类型是array型。里面就是function或者callback的参数列表,但是不能包含第一个参数,因为第一个参数默认是你要验证的字段,框架中用array_unshift($args,$_data);自动帮把第一个参数加个数组中了。