2010-12-09 155 views
3

我有两个配置文件。codeigniter:从其他配置文件访问配置变量?

config.php文件(代码点火器的核心配置)

和email.php(在使用时通过电子邮件类自动加载)

什么,我想要做的是。

在config.php具有

$config['env'] = 'hailwood_dev';

然后在email.php具有

if($config['env'] == 'hailwood_dev'){ 
//email variables like smtp server to do with localhost 
} elseif($config['env'] == 'production'){ 
//email variables like smtp server to do with production 
} 

但这不具有任何影响(即时猜测为$配置[ 'ENV']不没有这些值)。

如何访问此值?

回答

8

我检查并且在请求生命周期这一点上笨对象的配置属性仅仅是一个阵列,而不是一个配置对象。

所以,你应该能够得到你的配置设置是这样的:

$this->config['env'] 

所以这应该工作:

if ($this->config['env'] == 'hailwood_dev') 
{ 
    //email variables like smtp server to do with localhost 
} 
elseif ($this->config['env'] == 'production'){ 
    //email variables like smtp server to do with production 
} 

如果你是自动加载配置文件,确保它们在自动加载正确的顺序。配置文件依赖于它后,必须自动加载。

4

添加到您的电子邮件配置文件。

$environment = config_item('env'); 
OR THIS 
$environment = $this->config->item('env'); 

不知道第一个是否可以在您的设置上工作。大多数人似乎使用第二个。

+0

被告知配置不是对象 – Hailwood 2010-12-09 10:51:34

+0

这对我有效:config_item('env')。谢谢! – 2013-05-08 09:46:49

3

尝试这种情况:

$env = $this->config->item('env'); 

if ($env == "dev_server") { 
    // Do this... 
} 
else { 
    // Do this.. 
} 
+0

得到的配置不是对象 – Hailwood 2010-12-09 10:51:56

+0

这一个为我工作,接受的答案似乎无法在最新版本的CodeIgnitor – 2012-06-19 03:39:26

0

在这种情况下,你会希望把配置在

  • 的application/config/ceveloppment/my_config.php
  • 的application/config /生产/ my_config.php

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

结合其他awnsers,您可以在两个配置文件之间共享相同环境的信息

0

使用config_item函数(system/core/Common。PHP)

/** * 返回指定配置项 * * @access公共 * @返回混合

0

请参考下面的解决方案

$这个 - > config->配置[” BASE_URL']

echo "<pre>"; 
print_r($this->config); 

上面会打印所需的详细信息

0

在CodeIgniter 3.0中,访问另一个配置文件中配置变量的解决方案是获取CodeIgniter实例。一旦你有了它的参考,你就可以使用item功能进行访问。

$CI =& get_instance(); 
$var = $CI->config->item('item_name');