thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些

thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比綏陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式綏陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋綏陽地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

1) 首先 查看一下我們的目錄結(jié)構(gòu)

thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些

2)使用平常的寫法來構(gòu)造一下我們的驗(yàn)證

thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些

這里主要分四步在走,相對(duì)于使用獨(dú)立驗(yàn)證器或者挨個(gè)數(shù)據(jù)驗(yàn)證已經(jīng)優(yōu)化了大部分的代碼了,但是,當(dāng)在使用中會(huì)發(fā)現(xiàn),我們在多個(gè)驗(yàn)證或者多個(gè)模塊的時(shí)候會(huì)出現(xiàn)重復(fù)性的冗余去寫這一串代碼

問題? 如何將上訴的代碼壓縮成一行呢

AOP: 在不修改源代碼的情況下給程序動(dòng)態(tài)統(tǒng)一添加功能的一種技術(shù)。AOP實(shí)際是GoF設(shè)計(jì)模式的延續(xù),設(shè)計(jì)模式孜孜不倦追求的是調(diào)用者和被調(diào)用者之間的解耦,提高代碼的靈活性和可擴(kuò)展性,AOP可以說也是這種目標(biāo)的一種實(shí)現(xiàn)
AOP、OOP在字面上雖然非常類似,但卻是面向不同領(lǐng)域的兩種設(shè)計(jì)思想。OOP(面向?qū)ο缶幊蹋┽槍?duì)業(yè)務(wù)處理過程的實(shí)體及其屬性和行為進(jìn)行抽象封裝,以獲得更加清晰高效的邏輯單元?jiǎng)澐帧?/p>

我們引入aop編程的思想來解決的我們的問題,通過將功能單一的模塊合并統(tǒng)一起來

我們在common下創(chuàng)建 validate目錄,并且創(chuàng)建一個(gè)BaseValidate文件,繼承 think\validate

BaseValidate.php

    <?php
    
    namespace app\common\validate;

    use app\common\controller\Base;
    use think\Request;
    use think\Validate;

    class BaseValidate extends Validate
    {
        /**
         * 基礎(chǔ)類控制器
         * @param null|array $data
         * @return bool
         */
        public function goCheck($data = null)
        {
            # 當(dāng) data 不存在的時(shí)候去自動(dòng)校驗(yàn)獲取到的參數(shù)
            if( is_null($data) ) {
                # 獲取待驗(yàn)證的參數(shù)
                $data = Request::instance()->param();
            }

            # 進(jìn)行驗(yàn)證
            if( !$this->check($data) ) {
                (new Base())->ajaxjson(Base::error, $this->getError()); # 拋出的自定義異常
            }

            return true;
        }

優(yōu)化后代碼

thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些

瞬間舒服了很多吧,省去了非常多的代碼了算是,因?yàn)檫@個(gè)東西在很多控制器下都是應(yīng)該需要進(jìn)行使用的

優(yōu)化2

如baseValidate中的代碼,其中有一串代碼是is_null,那是為了校驗(yàn)所有傳遞上來的數(shù)據(jù)而編寫,當(dāng)我們需要校驗(yàn)所有的數(shù)據(jù)的時(shí)候只需要這樣寫

thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些

同樣可以校驗(yàn)出數(shù)據(jù),但是會(huì)有一個(gè)疑惑,我們沒有來獲取data數(shù)據(jù),無法使用data數(shù)據(jù),還是需要在控制器中重新進(jìn)行獲取,這是不可取的,所以我選擇這樣做

thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些

thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

名稱欄目:thinkphp中使用AOP切面編程快速驗(yàn)證數(shù)據(jù)的方法有哪些
網(wǎng)頁地址:http://muchs.cn/article16/pidsdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站維護(hù)、關(guān)鍵詞優(yōu)化網(wǎng)站導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化