我想加載Cookie助手在我的pre_controller掛鉤爲我們的網站上的'記住我'功能。我認爲用$ ci = & get_instance()創建一個CI對象的實例。將允許我訪問加載助手,但事實並非如此。CodeIgniter:掛鉤(預控制器)加載助手
想法?
$ci =& get_instance();
$ci->load->helper('cookie');
// does not load
我想加載Cookie助手在我的pre_controller掛鉤爲我們的網站上的'記住我'功能。我認爲用$ ci = & get_instance()創建一個CI對象的實例。將允許我訪問加載助手,但事實並非如此。CodeIgniter:掛鉤(預控制器)加載助手
想法?
$ci =& get_instance();
$ci->load->helper('cookie');
// does not load
的pre_controller
掛鉤執行之前的超級對象已經完全構造,所以get_instance()
不能工作 - 靜態對象返回到尚未初始化的參考。
考慮使用post_controller_constructor
鉤子代替;你的控制器的構造函數將執行,並且CI超級對象將可用。
post_controller_constructor的問題是它在構造函數之後運行(足夠有趣),並且如果使用Controller構造函數處理很多事情,這可能是一個問題。
如果對你來說不是問題(你的幫手不會影響在你的構造函數中運行或加載的任何東西),那麼如果這是一個問題,你有兩個解決方案。
創建MY_Controller並添加自定義掛鉤點。
class MY_Controller extends Controller
{
function MY_Controller()
{
parent::Controller();
$GLOBALS['EXT']->_call_hook('pre_controller_constructor');
}
}
請注意,如果你使用的CodeIgniter 3.0或更高版本,功能_call_hook
更名爲call_hook
。