thinkphp5 構建介面引數校驗層

2021-10-01 12:53:46 字數 1724 閱讀 8091

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的基類,所有的驗證類都要繼承自basevalidatebasevalidate本身繼承於validatethink\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...