我在application / core / MY_Lang.php中有核心类,这个类扩展了CI_Lang类,并覆盖了基类的构造函数:
class MY_Lang extends CI_Lang {
function __construct()
{
parent::__construct();
}
}
我如何从我班级的构造函数访问数据库对象。
我尝试访问CI超级对象,但目前尚未加载类CI_Controller
if (class_exists('CI_Controller'))
{
$this->CI =& get_instance();
}
答案 0 :(得分:2)
好吧,看起来我只能调用get_instance()。
但是我发现了一个类似的帖子,建议使用 post_controller_constructor “hook”来调用你的函数
见这里:CodeIgniter: get_instance inside My_Lang
Code Igniter挂钩的文档位于:http://ellislab.com/codeigniter/user_guide/general/hooks.html
所以我猜你在 application / config / hooks.php 文件中想要添加如下内容:
$hook['post_controller_constructor'] = array(
'class' => 'MY_Lang',
'function' => '__construct',
'filename' => 'MY_Lang.php',
'filepath' => 'core',
'params' => array()
);
我没有对此进行过测试,但是如果你没有完全开始工作,请告诉我,我可以进行适当的测试。
当然,然后在您在钩子中指定的函数中,您需要调用 get_instance(),然后加载数据库库并执行您想要的任何工作。
答案 1 :(得分:0)
您只需使用$this->CI =& get_instance();
,就不需要其他代码,因为您有if (class_exists('CI_Controller')) { ... }
这样您就可以使用CI调用,例如$this->CI->load->view
,$this->CI-load->lang
等。
虽然我从未使用CI挂钩,但我认为这不是您的需要或需要的,$this->CI =& get_instance();
应该可以正常工作。