ZF Validator 阅读笔记

1 继承关系:

    各种验证器都继承于Zend_Validate_Abstract, Zend_Validate_Abstract继承了Zend_Validate_Interface接口.

     Zend_Validate_Interface接口只提供了一个验证器的基础规范, Zend_Validate_Abstract实现了验证器的主要功能. 所以实际的验证器,也就是所谓的有效性检查组件只要继承这个类就可以了. 子类的扩展相对比较容易 .

 

2 Zend_Validate_Abstract 中消息与错误:

    阅读Validate代码发现, 记录错误,只需要调用父类的_error(); 方法就可以了,并且唯一的参数就是一个错误模板[ $_messageTemplates ] , 该变量在子类中实际的验证器中定义,也就是Zend_Validate_Abstract的子类 . 父类会调用子类的消息模板,并处理错误消息.

    阅读父类的_error(); 方法可以发现, 一个错误消息记录两个结果,一个是错误消息,一个是错误类型.

 

  1. /**
  2.      * @param  string $messageKey OPTIONAL
  3.      * @param  string $value      OPTIONAL
  4.      * @return void
  5.      */
  6.     protected function _error($messageKey = null, $value = null)
  7.     {
  8.         if ($messageKey === null) {
  9.             $keys = array_keys($this->_messageTemplates);
  10.             $messageKey = current($keys);
  11.         }
  12.         if ($value === null) {
  13.             $value = $this->_value;
  14.         }
  15.         $this->_errors[]              = $messageKey;
  16.         $this->_messages[$messageKey] = $this->_createMessage($messageKey$value);
  17.     }

 

_errors[] 数组中记录在子类中定义的错误类型,  _messages[] 中记录的是实际的粗五消息. 并且这里 $this->_createMessage($messageKey, $value);实现了错误消息和消息中预定义变量的替换, 这些都是在子类中定义的,父类直接调用,阅读这些代码可以知道, ZF 的验证器,只能实例化实用,不能静态调用 .

 

    在抽象类Zend_Validate_Abstract中, setMessages(array $messages)方法或 setMessage($messages,$key), 并不能替换消息模板中的预定义变量, 只能是在类的预定义属性 _messages中添加一项值, 变量的替换工作由 _createMessage() 方法来完成.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值