Zend Framework校验器Zend_Validate用法详解


Posted in PHP onDecember 09, 2016

本文实例讲述了Zend Framework校验器Zend_Validate用法。分享给大家供大家参考,具体如下:

引言:

是对输入内容进行检查,并生成一个布尔结果来表明内容是否被成功校验的机制。

如果isValid()方法返回False,子类的getMessage()方法将返回一个消息数组来解释校验失败的原因。

为了正确地返回消息与错误内容,对于isValid()方法的每次调用,都需要清除前一个isValid()方法调用所导致的消息和错误。

案例:

<?php
require_once 'Zend/Validate/EmailAddress.php';
function c_email($email)
{
  $validator = new Zend_Validate_EmailAddress();
  if($validator->isValid($email)){
    echo "输入的E-mail地址:";
    echo $email."有效!<p>";
  }else{
    echo "输入的E-mail地址:";
    echo $email."无效!";
    echo "失败消息为:<p>";
    foreach($validator->getMessages() as $message){
      echo $message."<p>";
    }
    foreach($validator->getErrors() as $error){
      echo $error."<p>";
    }
  }
}
$e_m1 = "abc@123.com";
$e_m2 = "abc#123.com";
c_email($e_m1);
c_email($e_m2);

结果:

输入的E-mail地址:abc@123.com有效!
输入的E-mail地址:abc#123.com无效!失败消息为:
'abc#123.com' is not a valid email address in the basic format local-part@hostname
emailAddressInvalidFormat

说明:

在引入类之后,定义一个验证函数,在函数中实例化类。用isValid()方法来进行验证,不同的子类验证器验证的内容是不一样的。
同时通过getMessages()方法和getErrors()方法来。

源码赏析:

public function isValid($value)
{
    if (!is_string($value)) {
      $this->_error(self::INVALID);
      return false;
    }
    $matches = array();
    $length = true;
    $this->_setValue($value);
    // Split email address up and disallow '..'
    if ((strpos($value, '..') !== false) or
      (!preg_match('/^(.+)@([^@]+)$/', $value, $matches))) {
      $this->_error(self::INVALID_FORMAT);
      return false;
    }
    $this->_localPart = $matches[1];
    $this->_hostname = $matches[2];
    if ((strlen($this->_localPart) > 64) || (strlen($this->_hostname) > 255)) {
      $length = false;
      $this->_error(self::LENGTH_EXCEEDED);
    }
    // Match hostname part
    if ($this->_options['domain']) {
      $hostname = $this->_validateHostnamePart();
    }
    $local = $this->_validateLocalPart();
    // If both parts valid, return true
    if ($local && $length) {
      if (($this->_options['domain'] && $hostname) || !$this->_options['domain']) {
        return true;
      }
    }
    return false;
}

解析:

这是主要的验证函数内容,分成了多种情况进行验证,有是否字符串,有是否符合邮箱规则,有长度是否符合,最终都符合才返回true。

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 面向对象 final类与final方法
May 05 PHP
PHP通用检测函数集合
Feb 08 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
浅谈php自定义错误日志
Feb 13 PHP
php操作redis缓存方法分享
Jun 03 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 PHP
PHP从二维数组得到N层分类树的实现代码
Oct 11 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 #PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 #PHP
浅谈PHP的数据库接口和技术
Dec 09 #PHP
magento后台无法登录解决办法的两种方法
Dec 09 #PHP
Zend Framework常用校验器详解
Dec 09 #PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 #PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 #PHP
You might like
php时间不正确的解决方法
2008/04/09 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
深入解答关于Python的11道基本面试题
2017/04/01 Python
详解python持久化文件读写
2019/04/06 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
python中open函数的基本用法示例
2019/09/07 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
用python写爬虫简单吗
2020/07/28 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
adidas泰国官网:adidas TH
2020/07/11 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
污水厂厂长岗位职责
2014/01/04 职场文书
进步之星获奖感言
2014/02/22 职场文书
岗位职责怎么写
2014/03/14 职场文书
美术学专业求职信
2014/07/23 职场文书
远程培训的心得体会
2014/09/01 职场文书
行政撤诉申请书
2015/05/18 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js