亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

php擴展Zend?Framework框架——Validate擴展

 更新時間:2022年09月29日 17:06:13   投稿:mdxy-dxy  
這篇文章介紹了php擴展Zend?Framework框架,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

之前寫了一片文章關于如何在Zend Framework框架0.6版本下擴展Zend Framework框架的。這篇應該說是類似的文章,但環(huán)境換成Zend Framework框架1.0RC1版本了。

     在開始Zend Framework框架擴展之前,推薦先看看Zend Framework框架手冊中的一些命令規(guī)范(Zend Framework框架推薦使用),同時希望讀者對Zend Framework框架有較好的理解。如果沒有,可以先上PHPCHIAN的Zend Framework框架版本詳細了解,或者到phpeye查找相關資料。

      Zend Framework框架的validator提供了強大的驗證功能,但在實際的操作中還是過于煩瑣。比如說驗證郵件,是用Zend Framework框架的代碼如下

<?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 "$message\n"; 
    } 

?> 

    有沒有發(fā)現,還是很類似我們不使用Zend Framework框架的驗證方式。只不過Zend Framework框架幫我們把郵件驗證的細節(jié)封裝好了。那么我們如何簡化成這樣效果呢?(下面是我擴展后的調用方式)

<?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()方法是把一條條的驗證規(guī)則加入進來。然后調用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; 
    } 

?> 


   另外你還可以直接擴展一些驗證規(guī)則類。下篇我再詳細說。 

相關文章

  • php swoole多進程/多線程用法示例【基于php7nts版】

    php swoole多進程/多線程用法示例【基于php7nts版】

    這篇文章主要介紹了php swoole多進程/多線程用法,結合實例形式分析了基于php7nts版使用swoole進行多線程創(chuàng)建、調用相關操作技巧,需要的朋友可以參考下
    2019-08-08
  • php跨域檢測類允許部分域名訪問的示例詳解

    php跨域檢測類允許部分域名訪問的示例詳解

    PHP跨域檢測類是一種封裝了跨域檢測邏輯的PHP類,它可以用于在PHP應用程序中檢測和處理跨域請求,以確保安全和正常的跨域通信,本文給出了示例給大家介紹php如何允許部分域名訪問,需要的朋友可以參考下
    2023-12-12
  • PHP配合fiddler抓包抓取微信指數小程序數據的實現方法分析

    PHP配合fiddler抓包抓取微信指數小程序數據的實現方法分析

    這篇文章主要介紹了PHP配合fiddler抓包抓取微信指數小程序數據的實現方法,結合實例形式分析了PHP結合fiddler抓取微信指數小程序數據的相關原理與實現方法,需要的朋友可以參考下
    2020-01-01
  • PHP常用字符串函數用法實例總結

    PHP常用字符串函數用法實例總結

    這篇文章主要介紹了PHP常用字符串函數用法,結合實例形式總結分析了PHP常用字符串函數基本功能、用法及相關注意事項,需要的朋友可以參考下
    2020-06-06
  • php基于自定義函數記錄log日志方法

    php基于自定義函數記錄log日志方法

    這篇文章主要介紹了php基于自定義函數記錄log日志方法,涉及php針對文件、目錄及錯誤日志相關操作技巧,需要的朋友可以參考下
    2017-07-07
  • php使用str_shuffle()函數生成隨機字符串的方法分析

    php使用str_shuffle()函數生成隨機字符串的方法分析

    這篇文章主要介紹了php使用str_shuffle()函數生成隨機字符串的方法,結合兩個簡單實例形式分析了基于str_shuffle()函數的隨機打亂字符串順序功能實現隨機字符串的相關操作技巧,需要的朋友可以參考下
    2017-02-02
  • PHP數組在底層的實現原理詳解

    PHP數組在底層的實現原理詳解

    這篇文章講給大家詳細介紹一下PHP數組在底層的實現原理,PHP數組在底層的實現原理可以分為兩種類型:基于哈希表的實現和基于有序列表的實現,文中通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-11-11
  • php文件上傳、下載和刪除示例

    php文件上傳、下載和刪除示例

    這篇文章主要為大家詳細介紹了php文件上傳、下載和刪除示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • php進行md5加密簡單實例方法

    php進行md5加密簡單實例方法

    在本文里小編給大家整理了一篇非常實用的php如何進行md5加密知識點內容,有需要的朋友們可以參考下。
    2019-09-09
  • PHP number_format() 函數定義和用法

    PHP number_format() 函數定義和用法

    number_format() 函數通過千位分組來格式化數字
    2012-06-06

最新評論