【小(xiǎo)編推薦】ThinkPHP3.2——操作(zuò)₹ ★綁定到(dào)類

2014-06-26  &nb✘₹sp;|   發布者:梁國(g≠α∑ uó)芳   | →¶;  查看(kàn):3320次

Thinkphp

定義

ThinkPHP3.2版本提供了(le)把每個(gè)操作(zuò)方☆γ法定位到(dào)一(yī)個(gè)類的(♠↕←de)功能(néng),可(kě)以讓你(nǐ)的(de)開™¶↕"(kāi)發工(gōng)作(zuò)更細化(huà),可(k₹✘ě)以設置參數(shù)ACTION_BIND_CLASS,例如(rú):

  1. 'ACTION_BIND_CLASS' => True,

設置後,我們的(de)控制(zhì)器(qì)定義有(yǒu)所改'¥βπ變,以URL訪問(wèn)為(wèi) http://serverName/Home/Index/index為(wèi)例,原來(lái)的(de)控制(zhì)器(qì)♥±•∏文(wén)件(jiàn)定義位置為(wèi):

  1. Application/Home/Controller/IndexController.class.php

控制(zhì)器(qì)類的(de)定義如(rú)下(xià):

  1. namespace Home\Controller;
  2. use Think\Controller;
  3. class IndexController extends Controller{
  4. public function index(){
  5. echo '執行(xíng)Index控制(zhì)器(qì)的(de)in‌ dex操作(zuò)';
  6. }
  7. }

可(kě)以看(kàn)到(dào),實際上(shàng)我™≤÷們調用(yòng)的(de)是(shì) Home\Controller\IndexController 類的(de)index方法。

設置後,控制(zhì)器(qì)文(wén)件(jiàn)位置改為(wè↓ε♣βi):

  1. Application/Home/Controller/Index/index.class.php

控制(zhì)器(qì)類的(de)定義如(rúπ≠¶γ)下(xià):

  1. namespace Home\Controller\Index;
  2. use Think\Controller;
  3. class index extends Controller{
  4. public function run(){
  5. echo '執行(xíng)Index控制(zhì)器(qì)的(de)↑​÷index操作(zuò)';
  6. }
  7. }

現(xiàn)在,我們調用(yòng)的(de)其實是(s¶¶hì) Home\Controller\Index\in¥♠ ≠dex 類的(de)run方法。

run方法依舊(jiù)可(kě)以支持傳♦‌入參數(shù)和(hé)進行(xíng)≠‌<Action參數(shù)綁定操作(zuò),但(dàn)不($®‍bù)再支持A方法實例化(huà)和(hé)R方法遠(yuǎn)程≈λ₽調用(yòng),我們建議(yì)R方法不(b<δù)要(yào)進行(xíng)當前訪問(wèn)←♥控制(zhì)器(qì)的(de)遠(yuǎn)程調用(yòng)。

前置和(hé)後置操作(zuò)

當設置操作(zuò)方法綁定到(dào)類後,前置δ>和(hé)後置操作(zuò)的(de)定義有(yǒu)£♣所改變,隻需要(yào)在類裡(lǐ)面定 ♦義_before_run和(hé)_after_run方法即可(kě),例如(rú):

  1. namespace Home\Controller\Index;
  2. use Think\Controller;
  3. class index extends Controller{
  4. public function _before_run(){
  5. echo 'before_'.ACTION_NAME;
  6. }
  7.  
  8. public function run(){
  9. echo '執行(xíng)Index控制(zhì)器(qì¶​¶γ)的(de)index操作(zuò)';
  10. }
  11.  
  12. public function _after_run(){
  13. echo 'after_'.ACTION_NAME;
  14. }
  15. }

空(kōng)控制(zhì)器(qì)

操作(zuò)方法綁定到(dào)類後,一(yī)樣可( ↑kě)以支持空(kōng)控制(zhì)器(q♣ ∑≤ì),我們可(kě)以創建 Application/Home/Con••שtroller/_empty目錄,即表示如(rú)果找不(bù)到(dào)當前的(de)α₽控制(zhì)器(qì)的(de)話(huà),會(huì)到(d±×☆ào)_empty控制(zhì)器(qì)目錄下(∏✔xià)面定位操作(zuò)方法。

例如(rú),我們訪問(wèn)了(le)URL地(dì)址 http://serverName/Home/Test/ind™'≤ex,但(dàn)并不(bù)存在 Application/Home/Controller/Tesγ₹t目錄,但(dàn)是(shì)有(yǒu)定義 Application/Home/Controller/Ωλδ<_empty目錄。

并且我們有(yǒu)定義:

  1. Application/Home/Controller/_empty/index.class.php

控制(zhì)器(qì)定義如(rú)下(xià):

  1. namespace Home\Controller\_empty;
  2. use Think\Controller;
  3. class index extends Controller{
  4. public function run(){
  5. echo '執行(xíng)'CONTROLLER_NAME.'控制(zhì)器(qì)的(de)'.ACTION_NAME.'操作(zuò)';
  6. }
  7. }

訪問(wèn)http://serverName/Home/Test/¶​π₽index後 輸出結果顯示:

  1. 執行(xíng)Test控制(zhì)器(qì)的(de)index操作(zuò)

空(kōng)操作(zuò)

操作(zuò)綁定到(dào)類後,我們依然可(kě)以實現(x§‍₽§iàn)空(kōng)操作(zuò)方法,我們隻要(yào)定義一(yī×γ​)個(gè) Home\Controller\Inde Ωx\_empty類,就(jiù)可(kě)以支持Index控制(≥✔★Ωzhì)器(qì)的(de)空(kōng)操作(zuò)訪問(wè©↓♠n),例如(rú): 控制(zhì)器(qì)定義如(rú)下(xià):>§

  1. namespace Home\Controller\Index;
  2. use Think\Controller;
  3. class _empty extends Controller{
  4. public function run(){
  5. echo '執行(xíng)Index控制(zhì)₹∏器(qì)的(de)'.ACTION_NAME.'操作(zuò)';
  6. }
  7. }

當我們訪問(wèn)http://serverName/Home/Index/™β™∞test後 輸出結果顯示:

  1. 執行(xíng)Index控制(zhì)器(qì)的(de)test操作(zuò)