CodeIgniter中的全局变量不工作
我想通过创建自己的库和配置文件在CodeIgniter中生成全局变量。这是我在我的库文件中写的,比如globalvars.php。我把它放在/应用程序/库中CodeIgniter中的全局变量不工作,codeigniter,variables,global,Codeigniter,Variables,Global,我想通过创建自己的库和配置文件在CodeIgniter中生成全局变量。这是我在我的库文件中写的,比如globalvars.php。我把它放在/应用程序/库中 class Globalvars{ function __construct($config = array()) { foreach ($config as $key => $value) { $data[$key] = $value; }
class Globalvars{
function __construct($config = array())
{
foreach ($config as $key => $value) {
$data[$key] = $value;
}
$CI =& get_instance();
$CI->load->library('session');
$CI->load->vars($data);
}
}
我希望存储在会话中的用户id在全局变量中可用,所以我在配置文件中写了这个。它也被命名为globalvars.php。它位于/application/config目录中
$config['user']=$this->session->userdata('id');
然后,我以这种方式将其写入控制器,以测试它是否正常工作
echo $data['user'];
但是我在浏览器中发现了这个错误
Message: Undefined property: CI_Loader::$session
Filename: config/globalvars.php
会话功能似乎还没有定义。我怎样才能让它工作?我错过了什么?任何帮助都将不胜感激。您不能使用
配置
文件中的会话
库
config
文件是在任何库之前加载的,因此$this->session
是未定义的。必须加载config.php
才能初始化session类,因为它从该文件读取设置
这种类型的很多问题(设置一些“全局”数据)可以通过使用基本控制器来解决,并在控制器中扩展它
// core/MY_Controller.php
MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct(); // Now the Session class should be loaded
// set config items here
}
}
“正常”控制器现在将扩展MY_控制器以利用此功能
有关更多详细信息,请参阅
此外,当您load->vars()
时,它们仅对视图层可用,它不会像您试图访问的那样创建名为$data
的全局变量。如果您这样做:
$this->load->vars(array('user' => '1'));
您可以在由$this->load->view()加载的文件中访问它,如下所示:
echo $user; // outputs "1"
见:
$this->load->vars($array)
此函数将关联数组作为输入并生成
使用PHP提取函数的变量。此函数生成
与使用$this->load->view()
上面的函数。您可能希望使用此函数的原因
如果您想在
控制器的构造函数,并使其在任何
查看从任何函数加载的文件。您可以有多个呼叫到
这个功能。数据被缓存并合并到一个数组中,以便
转换为变量
我要说的是,作为一个经验丰富的Codeigniter用户,“global vars”类的概念有点不可靠,可能没有必要,尤其是当它已经很容易获取和设置配置项时。使用此方法,您肯定会遇到一些令人困惑的问题和变量名冲突(在每个请求上预加载大量视图变量)