1. 云栖社区>
  2. PHP教程>
  3. 正文

php扩展ZF——Validate扩展

作者:用户 来源:互联网 时间:2017-12-01 20:20:10

php扩展validate

php扩展ZF——Validate扩展 - 摘要: 本文讲的是php扩展ZF——Validate扩展, 之前写了一片文章关于如何在ZF0.6版本下扩展ZF的。这篇应该说是类似的文章,但环境换成ZF1.0RC1版本了。      在开始ZF扩展之前,推荐先看看ZF手册中的一些命令规范(ZF推荐使用),同时希望读者对ZF有较好的理解。如果没有,


之前写了一片文章关于如何在ZF0.6版本下扩展ZF的。这篇应该说是类似的文章,但环境换成ZF1.0RC1版本了。      在开始ZF扩展之前,推荐先看看ZF手册中的一些命令规范(ZF推荐使用),同时希望读者对ZF有较好的理解。如果没有,可以先上PHPCHIAN的ZF版本详细了解,或者到phpeye查找相关资料。       ZF的validator提供了强大的验证功能,但在实际的操作中还是过于烦琐。比如说验证邮件,是用ZF的代码如下 <?php  require_once 'Zend/Validate/EmailAddress.php';  $validator = new Zend_Validate_EmailAddress();  if ($validator->isValid($email)) {      // email appears to be valid  } else {      // email is invalid; print the reasons      foreach ($validator->getMessages() as $message) {          echo "$messagen";      }  }  ?>      有没有发现,还是很类似我们不使用ZF的验证方式。只不过ZF帮我们把邮件验证的细节封装好了。那么我们如何简化成这样效果呢。(下面是我扩展后的调用方式) <?php  $validate = new Phpbean_Validate();          $validate -> set_breakOnFailure(false);          $validate -> add('email',new Zend_Validate_EmailAddress(),'邮件地址不正确。');          $validate -> add('username',new Zend_Validate_StringLength(3,15),'用户名长度必须在3到15之间。'%value%'不满足条件');          $validate -> add('password',new Zend_Validate_StringLength(6,20),'密码长度必须在6到20之间。');          $validate -> add('password',new Phpbean_Validate_isEqual($_POST['repassword']),'两次输入密码不匹配');          $authcode = new Phpbean_Img_Code();          $validate -> add('yanxue8_authcode',new Phpbean_Validate_isEqual($authcode->authcode($_POST['yanxue8_authcode_mdcode'],'DECODE')),'验证码不匹配!');          if( !$validate -> validator($_POST) ){              error_page('注册失败',$validate->getMessageText());          }  ?>      用上面这种方式一方面代码清晰,另一方面也有利同意的出错处理。那么如何做到这样呢。     关键是Phpbean_Validate这个类。     其实实现起来很简单,Phpbean_Validate::add()方法是把一条条的验证规则加入进来。然后调用Phpbean_Validate::validator()来验证就OK了。     具体实现步骤如下:     首先,在zend的同级目录中增加一个phpbean文件夹,然后在里面增加一个Validator.php文件。     然后,在validator.php文件加入Phpbean_Validate这个类的定义。注意(你可以修改成自己的文件名和路径名,但注意一定要和类的名称保持一致)。     这里,我给出我的Phpbean_Validate类的实现过程,仅供参考。 <?  class Phpbean_Validate{      protected $_fileds =array();      protected $_message = array();      protected $_breakOnFailure = true;      public function set_breakOnFailure($value){          $this->_breakOnFailure = $value;      }      public function add($key,$validate,$message='',$breakOnFailure=''){          if( empty($breakOnFailure) ) $breakOnFailure = $this->_breakOnFailure;           $this->_fileds[] = array($key,$validate,$message,$breakOnFailure);          return $this;      }      public function validator($array = array()){          if(empty($array)) $array = $_POST;          if (is_array($this->_fileds)) {              foreach ($this->_fileds as $filed){                  list($key,$validate,$message,$breakOnFailure) = $filed;                  if(empty($key)){                      if(!$validate){                          $this->_message[][] = $message;                          if($breakOnFailure) break;                       }                      continue;                  }                  if(!empty($message)) $validate->setMessage($message);                  if( !$validate->isValid($array[$key]) ){                      $this->_message[$key][] = $validate->getMessages();                      if($breakOnFailure) break;                   }              }              if(!empty($this->_message))return false;              return true;          }          return true;      }      public function getMessage(){          return $this->_message;      }      public function getMessageText(){          $str = '';          foreach ($this->_message as $ms){              foreach ($ms as $m) $str .= $m[0]."n";          }          return $str;      }  }  ?>     另外你还可以直接扩展一些验证规则类。下篇我再详细说。 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 扩展 validate ,以便于您获取更多的相关知识。