首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 可擴展驗證類:支援郵箱、手機、URL 等多規則驗證

     編輯:PHP 綜合知識

設計理念

本驗證類採用策略模式設計,核心優勢在於「規則即方法」——新增驗證規則只需在類中添加對應方法,無需修改核心邏輯。支援單規則、多規則、帶參數規則三種定義方式,靈活適應各種業務場景。

快速開始

require_once './Validator.class.php';

$data = [
    'nickname' => 'heno',
    'realname' => 'steven',
    'age' => 25,
    'mobile' => '1521060426'
];

$validator = new Validator($data);

// 定義驗證規則
$validator->setRule('nickname', 'required');
$validator->setRule('realname', ['length' => [1, 6], 'required']);
$validator->setRule('age', ['required', 'digit']);
$validator->setRule('mobile', ['mobile']);

// 執行驗證
$result = $validator->validate();
var_dump($result);           // bool(true/false)
var_dump($validator->getResultInfo()); // 詳細失敗信息

核心類結構

class Validator {
    private $_data;        // 待驗證數據
    private $_ruleList;    // 驗證規則集
    private $_result;      // 整體結果
    private $_resultInfo;  // 詳細錯誤信息

    // 核心驗證邏輯:遍歷規則,動態調用同名方法
    public function validate($data = null) { ... }
    
    // 內建驗證方法示例
    public function required($varName) { ... }    // 必填
    public function length($varName, $len) { ... } // 長度範圍
    public function email($varName) { ... }        // 郵箱格式
    public function mobile($varName) { ... }       // 手機號(支援 13/14/15/18 開頭)
    public function digit($varName) { ... }        // 純數字
    public function url($varName) { ... }          // URL 格式
}

擴展指南

新增身份證驗證只需添加一個方法:

public function idCard($varName) {
    $id = $this->_data[$varName] ?? '';
    // 實現 18 位身份證校驗邏輯(地址碼、出生日期、校驗碼)
    return $this->checkIdCard($id);
}

隨後即可像內建規則一樣使用:`$validator->setRule('idcard', 'idCard');`

最佳實踐建議

  • 控制器中集中定義規則,保持業務邏輯清晰
  • 錯誤信息建議統一由前端根據鍵名國際化
  • 大數據量驗證時考慮分批處理避免記憶體溢出

總結

此驗證類結構清晰、擴展性強,適合中小型項目快速構建表單驗證體系。生產環境建議整合 Laravel Validator 或 Symfony Validator 獲得更豐富的內建規則與本地化支援。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved