




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章校验器 Zend Validate 校验器 Validate 是对输入内容进行检查 并产生一个布尔结果来表明内容是否被成功校验的机制 如果输入不符合要求 校验器将会提供信息来说明输入不符合要求 这种机制在编写用户互动程序时非常有用 通过校验器可以对用户输入内容的有效性进行验证 使用ZendFramework中的Zend Validate组件即可实现常用校验器的功能 本章就来介绍ZendFramework中的Zend Validate校验器组件 11 1单个校验器的使用 Zend Validate类自身定义了很多常用的校验器规则 作为校验器最基本的用法 本节先来介绍如何使用单个的校验器 其中 包括使用new关键字创建校验器以及使用静态方法is 创建校验器两种 另外还有如何自定义校验失败信息 11 1 1使用new关键字 在Zend Validate类中 定义了很多子类作为系统校验器 对于这些子类 只需要使用new关键字为其实例化对象即可直接使用 这些子类包含了常见的校验操作 如检验E mail地址 检验网址 检验日期格式以及检验IP地址等 如果isValid 方法返回False 子类的getMessage 方法将返回一个消息数组来解释校验失败的原因 另外 子类还提供了getErrors 方法 该方法返回一个为校验失败鉴别原因的短字符串数组 通过这些字符串可以鉴别错误 这些字符串被应用于代码检查 并不输出给用户 在使用getMessage 方法与getErrors 方法时需要注意 这两个方法只为最近的isValid 调用返回校验失败消息 所以 为了正确的返回信息与错误内容 对于isValid 每次的调用 都需要清除前一个isValid 调用所导致的消息和错误 11 1 2自定义返回的错误信息 从代码11 1 php的执行结果中可以发现 getMessages 方法所返回的信息可能并不能满足用户的要求 如用户要求返回中文 这时就需要用户自定义返回的错误信息 使用子类的setMessage 方法可以实现自定义错误信息的目的 该方法的语法格式如下所示 setMessage value const 其中 参数 value为用户自定义返回错误信息的值 参数 const为需要被替换的错误常量 Zend Validate为每个错误都定义了常量 关于更多的错误常量 请参阅每个子类的源代码 使用此方法将使用户定义的错误信息替换类中所定义的错误信息 11 1 3使用静态方法 is 通过上一小节的介绍可以发现 使用new关键字为子类实例化对象的做法会稍微麻烦些 除此之外还可以通过类Zend Validate的静态方法is 来创建校验器 该方法的语法格式如以下代码所示 Zend Validate is value classBaseName args 以上代码中 参数 value为需要进行校验的值 参数 classBaseName为字符串变量 指代所调用的Zend Validate子类的名称 参数 args为子类 classBaseName所要求的参数表数组 该方法相当于为Zend Validate子类实例化对象 并调用对象的isValid 方法 所以该方法将根据数据是否通过校验返回相应的布尔值 在使用静态方法is 时需要注意 使用这种方法时getMessages 与getErrors 不可用 11 2使用校验器链 校验器链是多个校验器的一个连接 在对数据进行检测时 每个校验器将按照其顺序分别进行检测 当所有的校验规则都被通过时 将返回True值 而只要其中有一个校验不被通过 则返回False值 创建一个校验器链 首先需要为类Zend Validate实例化一个对象 然后通过其addValidator 方法向校验器链中添加校验器 该方法的语法格式如以下代码所示 addValidator validator breakChainOnFailure 11 3常用的预定义校验器 名称校验内容Alnum内容是否为字母或数字的组合Alpha内容是否为纯字母的组合Between数值是否位于指定的两个值之间Ccnum数值是否为十进制数Date日期格式是否正确Digits内容是否为数值EmailAddressE mail地址是否正确Float数值是否为浮点数GreaterThan数值是否比指定值大Hex数值是否为十六进进制Hostname主机名是否正确InArray内容是否存在于指定数组中Int数值是否为整数IpIP地址是否有效LessThan数值是否比指定值小NotEmpty内容是否不为空Regex是否匹配给定的正则表达式StringLength字符串长度是否在某个区间之内其中 Alnum Between EmailAddress以及StringLength校验器在前两节介绍实例中已经有所涉及 本节将重点介绍其中的Date Hostname InArray与Regex校验器 除此之外的几类校验器使用都非常简单 这里不作过多的介绍 11 3 1Date日期校验器 使用Zend validate Date校验器可以对给定的日期格式是否正确进行检测 给定的日期格式必须是年 月 日的形式 除此之外的其他形式将被认为是错误的 11 3 2Hostname主机地址校验器 除了能对E mail地址进行检测外 使用Zend validate Hostname校验器还可以对给定的主机地址是否正确进行检测 该校验器将会根据主机地址正确与否 返回相应的布尔值 如果指定的地址正确 将返回True 反之则返回False 11 3 3InArray数组包含校验器 使用Zend Validate InArray校验器可以对指定的内容是否包含在指定的数组中进行检测 在为类Zend Validate InArray实例化对象时 需要使用参数 参数为进行检测的目标数组 如果内容包含在数组中 将返回True值 反之则返回False 11 3 4Regex正则匹配校验器 Zend Validate Regex是一类较为特殊的校验器 该校验器可以使用正则表达式 是定义了一个用来搜索匹配字符串模式的特殊字符串 作为校验规则 通过使用正则表达式 再加上合理使用本校验器 几乎可以实现所有的校验规则 在为类Zend Validate Regex实例化对象时 需要指定充当校验规则的正则表达式字符串为参数 如果指定内容符合正则规则 将返回True值 反之 则返回False 11 4编写自定义校验器 从上一节介绍的内容中可以发现 Zend Validate组件中已经为用户预定义了很多常用的校验器 而且通过正则表达式还可以自由定义校验规则 但是实际情况的复杂性又绝非单凭系统预定义校验器就可以完全处理 此时 用户就需要定义满足实际情况的校验器 而Zend Validate也支持自定义校验器 本节来介绍如何编写自定义校验器 要编写自定义校验器 只需要定义一个类并引用Zend Validate Interface接口即可 该接口定义了两个方法 即isValid 和getMessages 这两个方法可以在用户的类里被实现 用Zend Validate addValidator 方法可以把实现Zend Validate Interface接口的对象添加到校验器链 11 5小结 本章
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基因相关精准治疗生殖内分泌疾病-洞察及研究
- 部队军人忠诚课件
- 河北省保定市易县2024-2025学年八年级下学期期末语文试题(含答案)
- 基于数字孪生技术的剪刀挡板实时应力监测与维护决策模型构建
- 反射金相显微镜与同步辐射光源联用的高通量材料失效分析瓶颈
- 反光蓝背心在元宇宙虚拟空间中的数字孪生技术映射研究
- 双碳目标下氟利昂替代品与压缩机效率的协同平衡难题
- 卡箍连接节点在极端振动环境下的电磁兼容性隐患研究
- (人教A版)必修一高一数学上册同步讲义+分层练习1.1 集合的概念(解析版)
- 北斗导航系统在复杂地形作业中的精度衰减悖论
- 汽轮机油品基础知识培训
- 油脂脂肪酸组成的测定内标法58课件
- FZ∕T81012-2024机织围巾、披肩
- 作战指挥体制说课课件
- 起重机安全应急预案
- 跨境贸易背景下非遗工艺产业的机遇与挑战
- 老年病贫血护理
- 第五单元晚清时期的内忧外患与救亡图存(单元复习课件)-高一历史(中外历史纲要上册)
- 2025年农村饮水安全项目社会稳定风险监测与评估报告
- 2025至2030中国无线电频率行业发展趋势分析与未来投资战略咨询研究报告
- 新人教版1年级上册数学全册教学课件(新版教材)
评论
0/150
提交评论