codeigniter钩子无法获得$ ci对象的工作

时间:2011-12-09 15:14:55

标签: codeigniter

我刚开始看钩子今天不是100%肯定我做错了但是当我尝试在我的函数中使用$ ci对象时我遇到了错误。

遇到PHP错误 严重性:注意 消息:尝试获取非对象的属性 文件名:hooks / language.php 行号:12

我的钩子文件看起来像这样。它位于我的应用程序文件夹中的hooks目录中。

class Language{

    var $ci;

    public function __construct(){
       $this->ci =& get_instance();
    }

    function get_language(){
        echo $this->ci->session->userdata('language');
    }
}

我需要在会话中获取要在我的函数中使用的值。我不应该这样做吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

在Base4 / 5.php文件中,写入了get_instance()函数并且它是有条件加载的,所以它在加载之后才会出现。这就是它给出错误的原因。

答案 1 :(得分:0)

刚刚完成了另一个谷歌搜索,看起来我正在使用Pre Controller的Hook是在创建对象之前我已经改变了钩子,它现在似乎工作正常。

答案 2 :(得分:0)

我使用post_controller_constructor作为我的钩子,然后CI工作。 我不得不打开配置中的挂钩。

答案 3 :(得分:0)

以下是默认的application / config / hooks.php

    // Stores the requested URL, which will sometimes be different than previous url 
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'save_requested',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Allows us to perform good redirects to previous pages.
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'prep_redirect',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Maintenance Mode
$hook['post_controller_constructor'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'check_site_status',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

/* End of file hooks.php */
/* Location: ./application/config/hooks.php */

我已将其更改为以下内容并且对我来说效果很好

 // Stores the requested URL, which will sometimes be different than previous url 
$hook['post_controller_constructor'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'save_requested',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Allows us to perform good redirects to previous pages.
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'prep_redirect',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

// Maintenance Mode
$hook['post_controller'][] = array(
                                'class'     => 'App_hooks',
                                'function'  => 'check_site_status',
                                'filename'  => 'App_hooks.php',
                                'filepath'  => 'hooks',
                                'params'    => ''
                            );

/* End of file hooks.php */
/* Location: ./application/config/hooks.php */