自定义的验证函数如何输入变量?

#1 tmd

比如我想自己做一个判断整数是否在(1, 3)之间的规则,如下的写法对吗?调用对吗?

 

class XXX extends spModel
{
    // 我们定义自己的验证规则  
     var $addrules = array(  
         // 自定义验证规则的函数名可以有两种形式  
         // 第一种是 '规则名称' => '验证函数名',这是当函数是一个单纯的函数时使用  
         // 第二种是‘规则名称’=> array('类名', '方法函数名'),这是当函数是一个类的某个方法函数时候使用。  
         'between' => 'isbetween',
       );

    var $Verifier = array(  
         "rules" => array
         ( // 规则  
             'Num' => array
             (   
                 'notnull' => TRUE,  
                 'is_numeric' => TRUE,
                 'between' => array(1, 3),  
                 'maxlength' => 20,                     
             ),
        ),  
         "messages" => array
         ( // 提示信息  
             'Num' => array
             (  
                 'notnull' => "不能为空",  
                 'is_numeric' => "必须是数字",  
                 'maxlength' => "不能大于20个字",  
                 'between' => "范围超限", // 这里是规则不通过时的提示  
             ),
          )  
     );

function isbetween($val, $top, $bottom)
{
   if(($val >= $bottom)&&($val < $top))
      return TRUE;
   else
      return FALSE; // 返回FALSE则无法通过验证  
}



还是这样对?

function isbetween($val, $area)
{
   if(($val >= $area[0])&&($val < $area[1]))
      return TRUE;
   else
      return FALSE; // 返回FALSE则无法通过验证  
}

2011-01-29 23:50:10

#2 jake

自定义验证函数,第一个参数是输入的数据,第二个参数是值。

'between' => TRUE,


function isbetween($val, $result) // 如果通过验证,则返回$result值。
{
   if( in_array($val, array(1,2,3)) )
      return $result;
   else
      return !$result; // 返回FALSE则无法通过验证  
}

2011-01-30 08:46:57

#3 tmd

回复 2 jake


    我是想把array(1,2,3)当做输入参数,可以实现吗?

2011-01-30 09:32:39

#4 jake

'between' => array(1,2,3),

function isbetween($val, $result){
return in_array($val, $result);
}

2011-01-30 09:40:53

#5 tmd

回复 4 jake


    哇!太好了!还以为不能实现呢。

2011-01-30 14:20:15