自动验证 使用自定义函数的问题

浏览:1658 发布日期:2010/07/08
- 普通 - 未处理
[i=s] 本帖最后由 xiaochong0302 于 2010-7-8 18:48 编辑 [/i]

/**
+----------------------------------------------------------
* 根据验证因子验证字段
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param array $data 创建数据
* @param string $val 验证规则
+----------------------------------------------------------
* @return boolean
+----------------------------------------------------------
*/
private function _validationField($data,$val) {
switch($val[4]) {
case 'function': // 使用函数进行验证
return call_user_func($val[1], $data[$val[0]]);//自己动手修正
case 'callback':// 调用方法进行验证
$args = isset($val[6])?$val[6]:array();
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);
}
case 'confirm': // 验证两个字段是否相同
return $data[$val[0]] == $data[$val[1]];
case 'in': // 验证是否在某个数组范围之内
return in_array($data[$val[0]] ,$val[1]);
case 'equal': // 验证是否等于某个值
return $data[$val[0]] == $val[1];
case 'unique': // 验证某个值是否唯一
if(is_string($val[0]) && strpos($val[0],','))
$val[0] = explode(',',$val[0]);
$map = array();
if(is_array($val[0])) {
// 支持多个字段验证
foreach ($val[0] as $field)
$map[$field] = $data[$field];
}else{
$map[$val[0]] = $data[$val[0]];
}
if($this->where($map)->find())
return false;
break;
case 'regex':
default: // 默认使用正则验证 可以使用验证类中定义的验证名称
// 检查附加规则
return $this->regex($data[$val[0]],$val[1]);
}
return true;
}

我在使用的时候,发现自定义函数总是返回true,一看源码,自定义函数验证后边是空的,默认就返回true了,我汗呀,这个真不应该,本想省点事,调试都搞死人,不看源码还不知道是怎么死的。

自定义函数里面还只能返回ture或者false,返回1,0之类的不鸟。。。

话说文档详细,细节还要看源码,瀑布汗。。。
评论(
后面还有条评论,点击查看>>