1. 程式人生 > >Thinkphp 控制器/外掛控制器

Thinkphp 控制器/外掛控制器

外掛控制器

3.2.2版本開始支援外掛控制器的呼叫,可以通過更加方便的URL地址訪問到模組中的外掛定義的控制器。

當URL中傳入外掛控制器變數的時候,會自動定位到外掛控制器中的操作方法。

外掛控制器的變數由引數 VAR_ADDON 進行設定,預設為addon,例如我們在URL中傳入: http://serverName/Home/info/index/addon/SystemInfo
由於傳入了addon引數,因此這裡的Info控制器並非原來的

Home/Controller/InfoController.class.php

而是呼叫SystemInfo外掛(位於Home/Addon目錄下面)的InfoController

控制器了,檔案位於 Home/Addon/SystemInfo/Controller/InfoController.class.php
外掛控制器本身的定義和普通的訪問控制器一樣,例如:

namespace Home\Addon\SystemInfo\Controller;
class InfoController extends \Think\Controller{
    public function index(){
        echo 'Addon SystemInfo';
    }
}

這樣,我們在訪問http://serverName/Home/info/index/addon/SystemInfo的時候 就會輸出 Addon SystemInfo


如果我們的外掛目錄不是Addon,而是Plugin,那麼需要在配置檔案中定義:

'VAR_ADDON'    =>    'plugin'

注意:目前外掛控制器僅支援模組的外掛控制器訪問,尚不支援全域性的公共外掛。

3.2.3版本開始,外掛控制器預設和模組同級,並增加ADDON_PATH常量用於定義外掛控制器的目錄,並且以目錄名作為外掛控制器的名稱空間根,同樣,假如我們在URL中傳入:

http://serverName/Home/info/index/addon/SystemInfo

3.2.3版本中,實際訪問的外掛控制器是

Addon/SystemInfo/Controller/InfoController.class.php

外掛控制器的定義如下:

namespace Addon\SystemInfo\Controller;
class InfoController extends \Think\Controller{
    public function index(){
        echo 'Addon SystemInfo';
    }
}

預設情況下,外掛控制器的根目錄位於和模組同級的Addon目錄下面,如果需要更改外掛控制器的目錄,可以定義ADDON_PATH常量,例如:

define('ADDON_PATH',     APP_PATH.'Common/Addon');

並且在專案配置檔案中使用AUTOLOAD_NAMESPACE引數重新定義Addon的名稱空間路徑,例如:

'AUTOLOAD_NAMESPACE'=>array(
    'Addon'=> APP_PATH.'Common/Addon',
)