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

ThinkPHP 3.1 新特性:動態設置自動驗證與自動完成的實戰應用

     編輯:PHP 相關知識

ThinkPHP 3.1 新特性:動態設置自動驗證與自動完成的實戰應用

ThinkPHP 3.1 引入 auto() 和 validate() 連貫操作,允許在 Action 中動態定義驗證/完成規則,無須依賴模型類靜態屬性,極大提升靈活性。

動態規則定義示例

$validate = array(
    array('verify', 'require', '驗證碼必須!'),
    array('name', '', '帳號名稱已經存在!', 0, 'unique', 1),
);

$auto = array(
    array('password', 'md5', 1, 'function'),  // 新增時 md5 加密
    array('create_time', 'time', 2, 'function'), // 寫入時自動時間戳
);

// 實例化模型並鏈式調用
M('User')->auto($auto)->validate($validate)->create();

規則格式說明

與模型 _validate / _auto 屬性完全一致:

  • 驗證:array(字段, 規則, 提示, 條件, 類型, 模式)
  • 自動完成:array(字段, 內容, 條件, 類型)

關鍵優勢:支援函數調用(如 time()、md5),模型屬性定義因 PHP 語法限制無法調用函數。

調用順序要求

auto() 和 validate() 必須在 create() 之前調用,否則不生效。

應用場景

  1. 多場景復用模型:註冊/登錄/修改密碼使用同一 User 模型,動態切換驗證規則
  2. 條件式自動完成:根據請求參數決定是否自動填充字段
  3. 插件/擴展開發:不侵入模型類,外部動態注入規則

對比優勢

方式靈活性函數調用依賴 D()
模型靜態屬性 (_validate/_auto)低(固定)不支援是
動態 auto()/validate()高(運行時決定)支援否(M() 即可)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved