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