2010-12-09 125 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');