摘要:面向?qū)ο缶幊提槍?duì)業(yè)務(wù)處理過(guò)程的實(shí)體及其屬性和行為進(jìn)行抽象封裝,以獲得更加清晰高效的邏輯單元?jiǎng)澐帧?/p>
thinkphp中使用AOP切面編程快速驗(yàn)證我們的數(shù)據(jù)
1) 首先 查看一下我們的目錄結(jié)構(gòu)
2)使用平常的寫(xiě)法來(lái)構(gòu)造一下我們的驗(yàn)證
這里主要分四步在走,相對(duì)于使用獨(dú)立驗(yàn)證器或者挨個(gè)數(shù)據(jù)驗(yàn)證已經(jīng)優(yōu)化了大部分的代碼了,但是,當(dāng)在使用中會(huì)發(fā)現(xiàn),我們?cè)诙鄠€(gè)驗(yàn)證或者多個(gè)模塊的時(shí)候會(huì)出現(xiàn)重復(fù)性的冗余去寫(xiě)這一串代碼
問(wèn)題? 如何將上訴的代碼壓縮成一行呢
AOP: 在不修改源代碼的情況下給程序動(dòng)態(tài)統(tǒng)一添加功能的一種技術(shù)。AOP實(shí)際是GoF設(shè)計(jì)模式的延續(xù),設(shè)計(jì)模式孜孜不倦追求的是調(diào)用者和被調(diào)用者之間的解耦,提高代碼的靈活性和可擴(kuò)展性,AOP可以說(shuō)也是這種目標(biāo)的一種實(shí)現(xiàn)
AOP、OOP在字面上雖然非常類似,但卻是面向不同領(lǐng)域的兩種設(shè)計(jì)思想。OOP(面向?qū)ο缶幊蹋┽槍?duì)業(yè)務(wù)處理過(guò)程的實(shí)體及其屬性和行為進(jìn)行抽象封裝,以獲得更加清晰高效的邏輯單元?jiǎng)澐帧?/pre>我們引入aop編程的思想來(lái)解決的我們的問(wèn)題,通過(guò)將功能單一的模塊合并統(tǒng)一起來(lái)
我們?cè)?b>common下創(chuàng)建 validate目錄,并且創(chuàng)建一個(gè)BaseValidate文件,繼承 thinkvalidate
BaseValidate.php
param(); } # 進(jìn)行驗(yàn)證 if( !$this->check($data) ) { (new Base())->ajaxjson(Base::error, $this->getError()); # 拋出的自定義異常 } return true; }優(yōu)化后代碼
瞬間舒服了很多吧,省去了非常多的代碼了算是,因?yàn)檫@個(gè)東西在很多控制器下都是應(yīng)該需要進(jìn)行使用的
優(yōu)化2如baseValidate中的代碼,其中有一串代碼是is_null,那是為了校驗(yàn)所有傳遞上來(lái)的數(shù)據(jù)而編寫(xiě),當(dāng)我們需要校驗(yàn)所有的數(shù)據(jù)的時(shí)候只需要這樣寫(xiě)
同樣可以校驗(yàn)出數(shù)據(jù),但是會(huì)有一個(gè)疑惑,我們沒(méi)有來(lái)獲取data數(shù)據(jù),無(wú)法使用data數(shù)據(jù),還是需要在控制器中重新進(jìn)行獲取,這是不可取的,所以我選擇這樣做
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/31095.html
摘要:簡(jiǎn)介什么是面向切面編程,是對(duì)傳統(tǒng)的面向?qū)ο缶幊痰难a(bǔ)充。通知有五種通知,執(zhí)行前,執(zhí)行后,執(zhí)行成功后,執(zhí)行拋出異常后,環(huán)繞通知。連接點(diǎn)連接點(diǎn)是一個(gè)應(yīng)用執(zhí)行過(guò)程中能夠插入一個(gè)切面的點(diǎn)。 OOP(Object Oriented Programming)面向?qū)ο缶幊探鉀Q了縱向上的層次分割,例如MVC模式將展示層、持久化層、邏輯處理層一一分開(kāi)了,使得開(kāi)發(fā)效率得到了較大提高,但是這只是縱向上的分割,...
摘要:簡(jiǎn)介什么是面向切面編程,是對(duì)傳統(tǒng)的面向?qū)ο缶幊痰难a(bǔ)充。通知有五種通知,執(zhí)行前,執(zhí)行后,執(zhí)行成功后,執(zhí)行拋出異常后,環(huán)繞通知。連接點(diǎn)連接點(diǎn)是一個(gè)應(yīng)用執(zhí)行過(guò)程中能夠插入一個(gè)切面的點(diǎn)。 OOP(Object Oriented Programming)面向?qū)ο缶幊探鉀Q了縱向上的層次分割,例如MVC模式將展示層、持久化層、邏輯處理層一一分開(kāi)了,使得開(kāi)發(fā)效率得到了較大提高,但是這只是縱向上的分割,...
摘要:核心控制器前端控制器預(yù)處理控制器負(fù)責(zé)接收頁(yè)面請(qǐng)求和返回?cái)?shù)據(jù)給頁(yè)面。使用面向切面編程管理事物日志權(quán)限等。數(shù)據(jù)庫(kù),持久化如何快速學(xué)習(xí)框架的回答知乎其他鏈接 RESTful API 網(wǎng)站即軟件 URI不包含動(dòng)詞 請(qǐng)求方法對(duì)應(yīng) CRUDGET ---SELECT,從服務(wù)器取出資源 POST --- CREATE,在服務(wù)器新建一個(gè)資源 PUT --- UPDATE,在服務(wù)器更新資源(客戶端提供...
摘要:閱讀原文造個(gè)輪子我學(xué)到了什么聽(tīng)說(shuō)的最多的是不是不要重復(fù)的造輪子不要被這句話蒙騙了,這句話應(yīng)該還沒(méi)說(shuō)完整,在什么情況下不要造輪子實(shí)際項(xiàng)目中由于工期和質(zhì)量原因,肯定不希望你造輪子,你造輪子花費(fèi)時(shí)間且質(zhì)量不如現(xiàn)有的輪子。 閱讀原文:造個(gè)輪子,我學(xué)到了什么 聽(tīng)說(shuō)的最多的是不是不要重復(fù)的造輪子?不要被這句話蒙騙了,這句話應(yīng)該還沒(méi)說(shuō)完整,在什么情況下不要造輪子?實(shí)際項(xiàng)目中由于工期和質(zhì)量原因,肯定不...
閱讀 1976·2021-11-24 09:38
閱讀 3339·2021-11-22 12:07
閱讀 1903·2021-09-22 16:03
閱讀 1956·2021-09-02 15:41
閱讀 2618·2021-07-24 23:28
閱讀 2211·2019-08-29 13:17
閱讀 1547·2019-08-29 12:25
閱讀 2666·2019-08-29 11:10