W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
CodeIgniter 的鉤子特性提供了一種方法來修改框架的內(nèi)部運作流程,而無需修改 核心文件。CodeIgniter 的運行遵循著一個特定的流程,你可以參考這個頁面的 應用程序流程圖 。但是,有些時候你可能希望在 執(zhí)行流程中的某些階段添加一些動作,例如在控制器加載之前或之后執(zhí)行一段腳本, 或者在其他的某些位置觸發(fā)你的腳本。
鉤子特性可以在 application/config/config.php 文件中全局的啟用或禁用, 設(shè)置下面這個參數(shù):
$config['enable_hooks'] = TRUE;
鉤子是在 application/config/hooks.php 文件中被定義的,每個鉤子可以定義 為下面這樣的數(shù)組格式:
$hook['pre_controller'] = array(
'class' => 'MyClass',
'function' => 'Myfunction',
'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
注意:
數(shù)組的索引為你想使用的掛鉤點名稱,譬如上例中掛鉤點為 pre_controller , 下面會列出所有可用的掛鉤點。鉤子數(shù)組是一個關(guān)聯(lián)數(shù)組,數(shù)組的鍵值可以是 下面這些:
如果你使用 PHP 5.3 以上的版本,你也可以使用 lambda表達式(匿名函數(shù)或閉包)作為鉤子, 這樣語法更簡單:
$hook['post_controller'] = function()
{
/* do something here */
};
如果你想在同一個掛鉤點處添加多個腳本,只需要將鉤子數(shù)組變成二維數(shù)組即可,像這樣:
$hook['pre_controller'][] = array(
'class' => 'MyClass',
'function' => 'MyMethod',
'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
$hook['pre_controller'][] = array(
'class' => 'MyOtherClass',
'function' => 'MyOtherMethod',
'filename' => 'Myotherclass.php',
'filepath' => 'hooks',
'params' => array('red', 'yellow', 'blue')
);
注意數(shù)組索引后面多了個中括號:
$hook['pre_controller'][]
這可以讓你在同一個掛鉤點處執(zhí)行多個腳本,多個腳本執(zhí)行順序就是你定義數(shù)組的順序。
以下是所有可用掛鉤點的一份列表:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: