如何在Codeigniter中的所有控制器中访问变量?

时间:2011-11-19 03:33:28

标签: php codeigniter inheritance

我在“CI_Controller”类的底部添加了一些变量,如下所示:

$data['foo'] = 'bar';
$data['animal'] = 'dog';
$data['justin_beiber'] = 'terrible';

由于我希望所有控制器都可以访问这些变量,并且由于所有控制器都扩展了这个CI_Controller,我认为这样可行:

echo $data['foo'];
die();

我把它放在一个扩展CI_Controller的控制器中。但它没有输出任何东西。如何让这个工作?

2 个答案:

答案 0 :(得分:2)

确保extend your main controller and not modify it。还要确保你的控制器扩展你的新控制器(MY_controller)而不是原始控制器,因为我们有类似的东西:

class  MY_Controller  extends  CI_Controller  {
// constructor and variables defined here
}

另请注意,如果您决定以这种方式使用它,则必须调用这样的变量:$this->foo['bar'] ...对于“普通”变量调用($foo['bar']),请创建一个{ {3}}和CI helper它。

答案 1 :(得分:0)

也许正确使用配置选项可以帮到你。

http://codeigniter.com/user_guide/libraries/config.html

您可以从CI结构中的任何位置调用配置项。

并且根据您的变量没有回应的原因:您可以在类中设置受保护的变量以通过继承使它们可见,但我认为这不是执行此操作的最佳方式。至少不知道为什么你想要$ data ['foo']在任何地方都可以使用而不使用帮助器。