前置和(hé)後置操作(zuò)指的(de)是♦ (shì)在執行(xíng)某個(gè)操作(zuò)方法→♠之前和(hé)之後會(huì)自(zì)動調用(ε↔yòng)的(de)方法,不(bù)過僅對(du"×ì)訪問(wèn)控制(zhì)器(qì)有(yǒσ♠σu)效。
其他(tā)的(de)分(fēn)層控制(zhì)器(qì)層和(h✔↔é)內(nèi)部調用(yòng)控制(zhì)器(qì)的(dγ↔♣₹e)情況下(xià)前置和(hé)後置操作(zuò)是(shì)無效的(de)δ∏≥。
系統會(huì)檢測當前操作(zuò)是(shì)否具有₽≠≤(yǒu)前置和(hé)後置操作(zuò)↑λ©,如(rú)果存在就(jiù)會(huì)按照(z∏↕↕σhào)順序執行(xíng),前置和(hλ₹λé)後置操作(zuò)的(de)定義方式如(rú)下(x ∑¥ià):
<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller{//前置操作(zuò)方法public function _before_index(){echo 'before<br/>';}public function index(){echo 'index<br/>';}//後置操作(zuò)方法public function _after_index(){echo 'after<br/>';}}
如(rú)果我們訪問(wèn) http://serverName/index.php/•↕§Home/Index/index
結果會(huì)輸出
beforeindexafter
前置和(hé)後置操作(zuò)的(de)注意事(shì)項如(rú)下(xi÷☆↓ à):
1. 如(rú)果當前的(de)操作(zuò)并沒有(yǒu)定義操作(z₩"•uò)方法,而是(shì)直接渲染模闆文(wén)件(jiàn),那₽¥"₽(nà)麽如(rú)果定義了(le)前置和(hé) σ後置方法的(de)話(huà),依然會(huì)生(shēng)效。真正有($yǒu)模闆輸出的(de)可(kě)能(£Ωnéng)僅僅是(shì)當前的(de)操作(zuò),前置和(hé)後置操≈© <作(zuò)一(yī)般情況是(shì)沒有(yǒu)任ε₹何輸出的(de)。
2. 需要(yào)注意的(de)是(shì),在有(yǒu)些(₩♣xiē)方法裡(lǐ)面使用(yòng)了(le)•λαexit或者錯(cuò)誤輸出之類的(de)話∏←§(huà) 有(yǒu)可(kě)能(néng)不(bù)會(huì)←₹再執行(xíng)後置方法了(le)。例如(r≈∞ú),如(rú)果在當前操作(zuò)裡(lǐ)面調用(y↔→òng)了(le)系統Action的(de)error方法,那(nà)★♦↑麽将不(bù)會(huì)再執行(xíng)後置操作(zuò),但(dàn≤↔≤)是(shì)不(bù)影(yǐng)響sΩε∑uccess方法的(de)後置方法執行(xín¥☆≠"g)。




