1,為什麼要封裝gocheck方法?
<?php
namespace
;use
;class
banner
else
}}
引數的驗證的流程在控制層
banner.php
中校驗http引數首先是獲取引數,然後呼叫它的驗證規則。如果沒有符合它的驗證規則,還需要自定義驗證規則具體請參照自定義驗證規則一節。如果每乙個控制器的方法都要這樣來操作,首先這樣的話,每乙個控制器就光驗證引數的**就會很長,因為獲取http引數就比較麻煩,**的易讀性和可維護性就會變差。
怎麼把這個引數的校驗流程變得簡潔一些。像下面的**一樣封裝乙個
gocheck()
方法,gocheck()
方法裡面獲取了全部的http引數,然後呼叫自生的check()
方法對引數做驗證,如果驗證不通過,就會終止**,在控制器方法中的**就無法繼續執行,就像乙個***一樣。
<?php
namespace
;use
;class
banner
}
2,封裝gocheck方法
現在來封裝gocheck()
方法:
第一步:首先gocheck
方法是每乙個控制器都要呼叫的方法,因為它封裝了引數校驗的整個流程。所以應該構建乙個basevalidate.php
的基類,所有的驗證類都要繼承自basevalidate
。basevalidate
本身繼承於validate
(think\validate
)基類。
在basevalidate中封裝gochech()方法
<?php
namespace
;use
think\exception
;use
think\request
;use
think\validate
;class
basevalidate
extends
validate
else
}}
自定義的驗證方法idmustbepositiveint.php
<?php
namespace
;class
idmustbepositiveint
extends
basevalidate
else
}}
控制器banner.php
中直接呼叫對應引數的validate
例項的gocheck()
方法
<?php
namespace
;use
;class
banner
}
總結,這樣封裝了gocheck方法之後,只要控制器裡面需要驗證引數,就可以新建乙個對應的驗證引數的validate類來繼承自basevalidate類,然後每乙個控制器只需要呼叫例項化的驗證類的gocheck()方法就可以。如果通過了驗證就繼續執行控制器下的**,如果驗證不通過,就直接阻斷了下面**的執行。 ThinkPHP5開發API介面例項
介面功能說明 前端提交學生學號 sno 給api,api介面返回此學生的基本資訊 api介面端 use think controller class user public function index return this fetch 客戶端提交學生學號 sno 給api,api返回此學生的基本...
Thinkphp5的ajax介面實現
前一篇講到thinkphp5從資料庫獲取資料之後賦給檢視view,前一篇從資料渲染方式來說是服務端資料渲染,這一章則是瀏覽器端資料渲染。按照知識總結依據來劃分,這是兩種不同的技術場景。下面介紹具體的ajax介面實現 12 en 348 9101111111 test 1213 1430 3132 對...
thinkphp5 介面例項
這是我自己構思的案例,寫的不好請多多指教。後台介面的 public function index die dump res die return json data data,code 1,message 操作完成 ajax可以,但是jq不行 return data tojson 對應json.pa...