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
}

Но это не имеет никакого эффекта (я предполагаю, что $config['env'] не имеет этих значений).

Как я могу получить доступ к этому значению?

7 ответов

Решение

Я проверил, и в этот момент в жизненном цикле запроса свойство config объекта CodeIgniter является просто массивом, а не объектом config.

Таким образом, вы должны быть в состоянии получить настройки вашей конфигурации следующим образом:

$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
}

Если вы загружаете файлы конфигурации, убедитесь, что они загружаются в правильном порядке. Файл конфигурации должен быть автоматически загружен после любого, от которого он зависит.

Добавьте это к вашему файлу конфигурации электронной почты.

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

Не уверен, что первый будет работать на вашей установке. Большинство людей, кажется, используют второе.

Попробуй это:

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

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

Пожалуйста, смотрите ниже решения

$ This->config-> конфигурации ['base_url']

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

Выше будут напечатаны необходимые данные

В CodeIgniter 3.0 решением для доступа к переменным конфигурации в другом файле конфигурации является получение экземпляра CodeIgniter. Если у вас есть ссылка на него, вы можете получить доступ с помощью item функция.

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

Использовать функцию config_item (system / core / Common.php)

/ ** * Возвращает указанный элемент конфигурации * * @access public * @return mixed

В этом случае вы хотели бы поместить конфигурацию в

  • приложение / Config / ceveloppment / my_config.php
  • Приложение / конфигурация / производство / my_config.php

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

В сочетании с другими awnsers вы можете обмениваться информацией между двумя файлами конфигурации для одной и той же среды

Другие вопросы по тегам