本文實例講述了Zend Framework常用校驗器。分享給大家參考,具體如下:
Date日期校驗器
代碼:
<?php require_once 'Zend/Validate/Date.php'; function c_date($date){ $validator = new Zend_Validate_Date(); if($validator->isValid($date)){ echo "输入的日期格式:"; echo $date."有效!<p>"; }else{ echo "输入的日期格式:"; echo $date."无效!<p>"; } } $date1 = "2008-02-15"; $date2 = "2008-02-31"; $date3 = "02-15-2008"; c_date($date1); c_date($date2); c_date($date3);
結果:
輸入的日期格式:2008-02-15有效!
輸入的日期格式:2008-02-31無效!
輸入的日期格式:02-15-2008無效!
點評:原始碼解析
public function isValid($value) { if (!is_string($value) && !is_int($value) && !is_float($value) && !is_array($value) && !($value instanceof Zend_Date)) { $this->_error(self::INVALID); return false; } $this->_setValue($value); if (($this->_format !== null) || ($this->_locale !== null) || is_array($value) || $value instanceof Zend_Date) { require_once 'Zend/Date.php'; if (!Zend_Date::isDate($value, $this->_format, $this->_locale)) { if ($this->_checkFormat($value) === false) { $this->_error(self::FALSEFORMAT); } else { $this->_error(self::INVALID_DATE); } return false; } } else { if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) { $this->_format = 'yyyy-MM-dd'; $this->_error(self::FALSEFORMAT); $this->_format = null; return false; } list($year, $month, $day) = sscanf($value, '%d-%d-%d'); if (!checkdate($month, $day, $year)) { $this->_error(self::INVALID_DATE); return false; } } return true; }
InArray陣列包含校驗器
如果內容包含在陣列中將傳回True,否則傳回False。
代碼:
<?php require_once 'Zend/Validate/InArray.php'; function c_array($n){ $temp = array("北京","上海","天津","重庆"); $validator = new Zend_Validate_InArray($temp); if($validator->isValid($n)){ echo "指定的内容:"; echo $n.",存在于指定数组中!<p>"; }else{ echo "指定的内容:"; echo $n.",不存在于指定数组中!<p>"; } } $city1 = "北京"; $city2 = "重庆"; $city3 = "郑州"; c_array($city1); c_array($city2); c_array($city3);
結果:
指定的內容:北京,存在於指定數組中!
指定的內容:重慶,存在於指定陣列中!
指定的內容:鄭州,不存在於指定陣列中!
Regex正規符合校驗器
透過使用正規表示式,再加上合理使用本校驗器,幾乎可以實現所有的校驗規則。
代碼:
<?php require_once "Zend/Validate.php"; function c_rege($v){ $pattern = array("/ab{2,}/"); if(Zend_Validate::is($v,"Regex",$pattern)){ echo "<font color=\"#006600\">指定的内容:"; echo $v."<p>符合定义的正规规则!</font>"; echo "<p>"; }else{ echo "<font color=\"#ff0000\">指定的内容:"; echo $v."<p>不符合定义的正规规则!</font>"; echo "<p>"; } } $temp1 = "ab"; $temp2 = "abb"; $temp3 = "abbb"; c_rege($temp1); c_rege($temp2); c_rege($temp3);
結果:
指定的內容:ab
不符合定義的正規規則!
指定的內容:abb
符合定義的正規規則!
指定的內容:abbb
符合定義的正規規則!
點評:
public function __construct($pattern) { if ($pattern instanceof Zend_Config) { $pattern = $pattern->toArray(); } if (is_array($pattern)) { if (array_key_exists('pattern', $pattern)) { $pattern = $pattern['pattern']; } else { require_once 'Zend/Validate/Exception.php'; throw new Zend_Validate_Exception("Missing option 'pattern'"); } } $this->setPattern($pattern); }
建構函式初始化私有屬性,
public function isValid($value) { if (!is_string($value) && !is_int($value) && !is_float($value)) { $this->_error(self::INVALID); return false; } $this->_setValue($value); $status = @preg_match($this->_pattern, $value); if (false === $status) { $this->_error(self::ERROROUS); return false; } if (!$status) { $this->_error(self::NOT_MATCH); return false; } return true; }
進行驗證工作。
自訂校驗器編寫
繼承Zend_Validate_Interface介面實作使用者自訂校驗器。
程式碼案例,功能判斷指定數值是否為3的倍數。
介面程式碼:
<?php /** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category Zend * @package Zend_Validate * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id: Interface.php 24593 2012-01-05 20:35:02Z matthew $ */ /** * @category Zend * @package Zend_Validate * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ interface Zend_Validate_Interface { /** * Returns true if and only if $value meets the validation requirements * * If $value fails validation, then this method returns false, and * getMessages() will return an array of messages that explain why the * validation failed. * * @param mixed $value * @return boolean * @throws Zend_Validate_Exception If validation of $value is impossible */ public function isValid($value); /** * Returns an array of messages that explain why the most recent isValid() * call returned false. The array keys are validation failure message identifiers, * and the array values are the corresponding human-readable message strings. * * If isValid() was never called or if the most recent isValid() call * returned true, then this method returns an empty array. * * @return array */ public function getMessages(); }
要實現其中的兩個方法,一個是isValid(),一個是getMessages()
實作程式碼:
<?php require_once "Zend/Validate/Interface.php"; class MyValidator implements Zend_Validate_Interface{ protected $_messages = array(); public function isValid($value){ $this->_messages = array(); $requirement = !($value%3); if(!$requirement){ $this->_messages[] = "'$value'不能被3整除"; return false; } return true; } public function getMessages(){ return $this->_messages; } } function c_n_3($n){ $validator = new MyValidator(); if($validator->isValid($n)){ echo "指定的数值:"; echo $n.",是3的倍数!<p>"; }else{ echo "指定的数值:"; echo $n.",不是3的倍数!<p>"; echo "失败的消息为:<p>"; foreach ($validator->getMessages() as $message) { echo "$message<p>"; } } } $num1 = 5; $num2 = 6; $num3 = 8; c_n_3($num1); c_n_3($num2); c_n_3($num3);
結果:
指定的數值:
rrreee結果:
指定的數值:
3的數值! 失敗的消息是:'5'不能被3整除指定的數值:6,是3的倍數! 指定的數值:8,不是3的倍數! 失敗的訊息為:'8'不能被3整除點評:這裡透過isValid()方法來設定屬性訊息,透過getMessages()方法來取得錯誤訊息。錯誤訊息是一個數組,透過foreach()方法來遍歷讀取。 🎜🎜希望本文所述對大家基於Zend Framework框架的PHP程式設計有所幫助。 🎜🎜更多Zend Framework常用校驗器詳解相關文章請關注PHP中文網! 🎜
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具