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

Php 如何在Codeigniter中的所有控制器中访问变量?,php,codeigniter,inheritance,Php,Codeigniter,Inheritance,我在“CI_Controller”类的底部添加了一些变量,如下所示: $data['foo'] = 'bar'; $data['animal'] = 'dog'; $data['justin_beiber'] = 'terrible'; 由于我希望所有控制器上都可以访问这些变量,并且所有控制器都扩展了此CI_控制器,因此我认为这样做可行: echo $data['foo']; die(); 我把它放在一个扩展CI_控制器的控制器中。但是它没有输出任何东西。如何使其工作?也许正确使用配置选项会

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

$data['foo'] = 'bar';
$data['animal'] = 'dog';
$data['justin_beiber'] = 'terrible';
由于我希望所有控制器上都可以访问这些变量,并且所有控制器都扩展了此CI_控制器,因此我认为这样做可行:

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

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

也许正确使用配置选项会对您有所帮助

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

至于为什么变量不响应:可以在类中设置受保护的变量,使它们通过继承可见,但我认为这不是最好的方法。至少在不知道为什么您希望$data['foo']在任何地方都可以使用而不需要使用助手的情况下是这样的。

请确保您可以。另外,请确保您的控制器扩展了新控制器(MY_控制器),而不是原来的控制器,因为我们有如下功能:

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

还请注意,您必须像这样调用变量:
$this->foo['bar']
如果您决定这样使用它。。。对于“普通”变量调用(
$foo['bar']
),请创建一个和

谢谢,这似乎是个好主意。然而,我的最终目标是:让所有这些变量在我的所有视图中都可以访问。但现在我必须这样做:$data['foo']=$this->config->item('foo');我必须在每个控制器中执行此操作。有没有办法将这些变量传递到我的$data var中,这样当我从控制器在视图中传递这个var时,$data var将自动包含以前在配置文件中定义的所有变量?基本上,我不想在每个控制器中重复变量分配代码。也许可以尝试使用我的_控制器扩展控制器,并调用$this->load->vars(array('foo'=>'whatever');在构造函数中……我或多或少的意思是,您可以调用$this->config->item('foo')来代替$data['foo']或仅仅调用$foo,但这并不是您问题的答案。至少配置选项仍然是一个选项。