<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] * * * * * ## 1 更新簡介 ### 1-1 驗證類Validate 添加驗證類\library\think\Validate.php ### 1-2 助手函數helper.php 助手文件helper.php有關單字母函數名稱修改 ### 1-3 Db驅動Db\ 數據庫驅動\library\think\Db\ 進行重構 ### 1-4 其他更新小結 模板后綴更新等 ## 2 驗證類 ###2-1 驗證類簡介 >[info] 驗證類的實現在\library\think\Validate.php >[info] 驗證類用來對輸入數據進行驗證, >[info] 使用I方法獲取數據庫,創建驗證類對象,對數據進行規則驗證 使用方法見 [官方文檔](http://www.hmoore.net/manual/thinkphp5/129352) 具體使用時,將其中的$data換成I方法獲取的輸入數據即可 ###2-2 使用方法 >[info] 1 創建驗證類Validate的對象,對數據進行驗證 ~~~ ; 創建Validate對象,對輸入數據進行驗證。將$data替換為I()方法獲取的輸入數據 $validate = new Validate([ 'name'=>'require|max:25', 'email'=>'email' ]); $data = [ 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com' ]; if(!$validate->check($data)){ dump($validate->getError()); } ~~~ >[info] 2 模型中使用驗證 ~~~ ;實例:模型調用validate()方法進行輸入數據驗證 $User = M('User'); $data = $User->validate( [ 'name' => 'require|max:25', 'email' => 'email', ], [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字符', 'email' => '郵箱格式錯誤', ] )->create($data); if(!$data){ // 驗證失敗 輸出錯誤信息 dump($User->getError()); } ~~~ >[info] 3 繼承think\Controller類 調用validate()方法 ~~~ ;實例 在具體控制器中調用validate()方法 $result = $this->validate( [ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com', ], [ 'name' => 'require|max:25', 'email' => 'email', ]); if(true !=== $result){ // 驗證失敗 輸出錯誤信息 dump($result); } ~~~ >[info] 4 在模型或控制器中調用驗證類 ~~~ ;定義驗證類 namespace app\index\validate; use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', ]; protected $message = [ 'name.require' => '用戶名必須', 'email' => '郵箱格式錯誤', ]; protected $scene = [ 'add' => ['name,'email'], 'edit' => ['email'], ]; } ;調用同名稱驗證類與模型進行驗證 $User = M('User'); $data = $User->validate(true)->create($data); if(!$data){ dump($User->getError()); } ;調用不同名稱類與模型進行驗證 $User = M('User'); $data = $User->validate('Member')->create($data); if(!$data){ dump($User->getError()); } ;模型中場景使用 $User = M('User'); $data = $User->validate('User.edit')->create($data); if(!$data){ dump($User->getError()); } ;控制器調用驗證類型進行驗證 $result = $this->validate($data,'User'); if(true !=== $result){ dump($result); } ;控制器使用場景調用驗證類 $result = $this->validate($data,'User.edit'); if(true !=== $result){ dump($result); } ~~~ ###2-3 源代碼分析(Validate.php) >[info] 成員變量 ~~~ ;驗證器實例對象,單一實例實現 protected static $instance = null; ;驗證方法類型,方法別名 protected static $type = []; protected $alias = [ '>' => 'gt', '>=' => 'egt', '<' => 'lt', '<=' => 'elt', '=' => 'eq', 'same' => 'eq', ]; ;驗證規則,驗證提示信息,默認驗證方法提示信息 protected $rule = []; protected $message = []; protected static $typeMsg ;當前驗證場景,正則規則,場景規則,錯誤信息,是否批量驗證 protected $currentScene protected $regex = []; protected $scene = []; protected $error = []; protected $batch = false; ~~~ >[info] public 成員方法(驗證接口調用) * * * * * #### 構造函數 __construct() ~~~ public function __construct(array $rules = [], $message = []) ~~~ > $ruls:驗證規則 字段的驗證方法 > $message:提示信息 驗證報錯提示語 ~~~ ;實例 $rule定義,$msg定義。使用時將$data換成I()方法獲取的輸入數據即可 $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; $msg = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字符', 'age.number' => '年齡必須是數字', 'age.between' => '年齡必須在1~120之間', 'email' => '郵箱格式錯誤', ]; $data = [ 'name' => 'thinkphp', 'age' => 121, 'email' => 'thinkphp@qq.com', ]; $validate = new Validate($rule,$msg); $result = $validate->check($data); if(!$result){ echo $validate->getError(); } ~~~ #### 實例化驗證器 make() ~~~ public static function make($rules = [], $message = []) ~~~ > $ruls:驗證規則 字段的驗證方法 > $message:提示信息 驗證報錯提示語 > 說明:將Validate作為靜態類使用創建驗證實例對象, #### 添加字段驗證規則 rule() ~~~ public function rule($name, $rule = '') ~~~ > $name:驗證的字段名稱 > $rule:字段驗證規則 ~~~ ;實例:使用rule()方法添加對zip字段的驗證規則 $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', ]; $validate = new \Validate($rule); $validate->rule('zip', '/^\d{6}$/'); $validate->rule([ 'email' => 'email', ]); ~~~ #### 添加驗證方法實現 extend() ~~~ public static function extend($type, $callback = null) ~~~ > $type :字段驗證規則 > $callback: 驗證規則回調方法 ~~~ 實例:使用extend()添加驗證規則方法 $validate = new Validate(['name' => 'checkName:1']); $validate->extend('checkName', function ($value, $rule) { return $rule == $value ? true : '名稱錯誤'; }); $data = ['name' => 1]; $result = $validate->check($data); ~~~ ~~~ 實例:使用extend()添加多個驗證規則方法 $validate = new Validate(['name' => 'checkName:1']); $validate->extend([ 'checkName'=> function ($value, $rule) { return $rule == $value ? true : '名稱錯誤'; }, 'checkStatus'=> [$this,'checkStatus'] ]); $data = ['name' => 1]; $result = $validate->check($data); ~~~ #### 設置驗證方法提示語 setTypeMsg() ~~~ public static function setTypeMsg($type, $msg = null) ~~~ > $type:驗證規則類型 > $msg :提示語 ~~~ 實例:使用setTypeMsg()添加驗證規則類型提示語 $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; $msg = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字符', 'age.number' => '年齡必須是數字', 'age.between' => '年齡必須在1~120之間', 'email' => '郵箱格式錯誤', ]; $data = [ 'name' => 'thinkphp', 'age' => 121, 'email' => 'thinkphp@qq.com', ]; $validate = new Validate($rule); $validate = $validate->setTypeMsg($msg); $result = $validate->check($data); if(!$result){ echo $validate->getError(); } ~~~ #### 設置字段提示信息 message() ~~~ public function message($name, $message = '') ~~~ > $name:字段名稱 > $message:提示信息 #### 設置驗證場景 scene() ~~~ public function scene($name, $fields = null) ~~~ > $name:驗證場景 > $fields: 當前場景驗證字段 ~~~ ;實例:使用scene()定義場景下特定字段的驗證 ;edit場景下只驗證name和age字段 $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; $msg = [ 'name.require' => '名稱必須', 'name.max' => '名稱最多不能超過25個字符', 'age.number' => '年齡必須是數字', 'age.between' => '年齡只能在1-120之間', 'email' => '郵箱格式錯誤', ]; $data = [ 'name' => 'thinkphp', 'age' => 10, 'email' => 'thinkphp@qq.com', ]; $validate = new Validate($rule); $validate->scene('edit', ['name', 'age']); $result = $validate->scene('edit')->check($data); ~~~ #### 設置批量驗證 batch() ~~~ public function batch($batch = true) ~~~ > $bacth:開啟與關閉批量驗證 #### 開始驗證數據 check() ~~~ public function check(&$data, $rules = [], $scene = '') ~~~ > $data 需要檢測的數據 > $rules: 驗證使用的規則,默認使用當前類型的規則屬性 > $scene: 驗證的場景, 默認使用scene()設置的場景屬性 ~~~ ;使用check()對$data數據進行驗證 $validate = new Validate([ 'name'=>'require|max:25', 'email'=>'email' ]); $data = [ 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com' ]; if(!$validate->check($data)){ dump($validate->getError()); } ~~~ #### 獲取錯誤提示信息 getError() ~~~ public function getError() ~~~ >[info] protected成員方法(內部實現機制) ~~~ ;對單個字段進行驗證 protected function checkItem($field, $value, $rules, &$data, $title = '', $msg = []) ;驗證token令牌 protected function token($value, $rule, $data) ;各種驗證規范實現回調 返回布爾類型值 protected function confirm($value, $rule, $data) protected function egt($value, $rule) protected function gt($value, $rule) protected function elt($value, $rule) protected function lt($value, $rule) protected function eq($value, $rule) protected function is($value, $rule) protected function activeUrl($value, $rule) protected function ip($value, $rule) protected function method($value, $rule) protected function dateFormat($value, $rule) protected function unique($value, $rule, $data, $field) protected function behavior($value, $rule, $data) protected function filter($value, $rule) protected function requireIf($value, $rule, $data) protected function requireCallback($value, $rule, $data) protected function requireWith($value, $rule, $data) protected function in($value, $rule) protected function notIn($value, $rule) protected function between($value, $rule) protected function notBetween($value, $rule) protected function length($value, $rule) protected function max($value, $rule) protected function min($value, $rule) protected function after($value, $rule) protected function before($value, $rule) protected function expire($value, $rule) protected function allowIp($value, $rule) protected function denyIp($value, $rule) protected function regex($value, $rule) ;獲取字段子,獲取驗證規則提示信息,獲取驗證場景 protected function getDataValue($data, $key) protected function getRuleMsg($attribute, $title, $type, $rule) protected function getScene($scene = '') ~~~ ## 3 助手函數 ###3-1 助手函數修改簡介 >[info] 助手函數改用use導入相關類 >[info] 助手函數有關方法名稱發生變動 ###3-2 方法名稱改動 ~~~ M() 改為 model() U() 改為 url() R() 改為 action() S() 改為 cache() V() 改為 view() 添加 controller() 方法 實例化控制器 添加 route() 方法 注冊路由規則 ~~~ ## 5 其他修改 ###5-1 模板后綴 模板后綴修改為.php
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看