Класс конфигурации (Config)
Класс конфигурации предоставляет средства для получения параметров конфигурации. Эти настройки могут быть прочитаны из конфигурационного файла по умолчанию (application/config/config.php) или из вашего собственного конфигурационного файла.
Примечание: Этот класс автоматически инициализируется системой, поэтому нет нужны загружать его вручную.
Анатомия конфигурационного файла
По умолчанию CodeIgniter имеет один первичный конфигурационный файл, который находится в application/config/config.php. Если вы откроете этот файл в текстовом редакторе, вы увидите элементы конфигурации, которые хранятся в массиве $config.
Вы можете добавлять собственные элементы конфигурации в этот файл, или вы можете предпочесть хранить ваши элементы конфигурации отдельно (конечно, если они вообще нужны вам). Просто создайте собственный файл и сохраните его в директорию config.
Примечание: Если вы создаете ваши собственные конфигурационные файлы, используйте тот-же формат, что и у первичного, храните ваши элементы в массиве $config. CodeIgniter будет интеллигентно управлять этими файлами, так, чтобы не допускать конфликтов (предполагая, что индексы массивов не называются также, как и другие).
Загрузка конфигурационного файла
Примечание: CodeIgniter автоматически загружает первичный конфигурационный файл (application/config/config.php), поэтому имеет смысл загружать вручную только ваши собственные файлы.
Есть два способа загрузить файл конфигурации:
- Ручная загрузка
Чтобы загрузить один из ваших собственный файлов с конфигурациями, используйте следующую функцию в ваших контроллерах:
$this->config->load('filename');
Где filename это имя конфигурационного файла без расширения ".php".
Если вы хотите загрузить несколько файлов конфигурации, они будут слиты в один основной массив конфигурации. Конечно, могут происходить коллизии имен, если вы используете идентичные имена ключей массивов в разных конфигурационных файлах. Чтобы предотвратить коллизии вы можете установить второй параметр в TRUE и каждый конфигурационный файл будет сохранен в массиве, индексы которого соответствуют имени файла. Пример:
// Сохранено в массиве в соответствии с этим прототипом: $this->config['blog_settings'] = $config
$this->config->load('blog_settings', TRUE);Пожалуйста посмотрите раздел ниже, названный Получение элементов конфигурации, чтобы узнать как получать элементы конфигурации при этом способе.
Третий параметр позволит вам подавить ошибки в случае если файл конфигурации не существует:
$this->config->load('blog_settings', FALSE, TRUE);
- Автозагрузка
Если вы обнаружите, что конкретный конфигурационный файл используется глобально, вы можете сделать так, чтобы он автоматически загружался системой. Чтобы сделать это, откройте файл application/config/autoload.php, и добавьте название вашего конфигурационного файла, как показано там.
Получение элементов конфигурации
Чтобы получить элемент из вашего конфигурационного файла, используйте следующую функцию:
$this->config->item('item name');
Где item name это ключ элемента массива $config, который вы хотите получить. Например, чтобы получить ваш язык, сделайте так:
$lang = $this->config->item('language');
Функция вернет FALSE, если элемент не существует.
Вы можете использовать второй параметр функции $this->config->load, чтобы ассоциировать элементы конфигурации с определенным индексом. Пример:
// Загружает конфигурационный файл blog_settings.php и ассоциирует элементы в нем индексу с именем "blog_settings"
$this->config->load('blog_settings', TRUE);
// Получает элемент конфигурации с названием site_name, содержащийся в массиве blog_settings
$site_name = $this->config->item('site_name', 'blog_settings');
// Альтернативный способ указать конкретный элемент:
$blog_config = $this->config->item('blog_settings');
$site_name = $blog_config['site_name'];
Установка элемента конфигурации
Если вы хотите динамически устанавливать элементы конфигурации, или изменять существующие, вы можете сделать это, используя:
$this->config->set_item('item_name', 'item_value');
Где item_name это индекс массива $config, который вы хотите поменять, и item_value это его значение.
Окружения
Вы можете загружать различные конфигурационные файлы в зависимости от текущего окружения. Константа ENVIRONMENT определяется в index.php, и детально описана в разделе Работа с окружениями.
Чтобы создать конфигурационный файл, зависимый от окружения, создайте его копию в application/config/{ENVIRONMENT}/{FILENAME}.php
Например, чтобы создать config.php для эксплуатации (production), сделайте следующее:
- Создайте директорию application/config/production/
- Скопируйте ваш существующий config.php в эту директорию
- Отредактируйте application/config/production/config.php так, чтобы он содержал ваши эксплуатационные настройки
Когда вы установите константу ENVIRONMENT в 'production', будут загружаться настройки из config.php для режима эксплуатации.
Вы можете поместить соответствующие конфигурационные файлы в директории, соответствующие окружениям:
- Конфигурационные файлы CodeIgniter по умолчанию
- Ваши собственные конфигурационные файлы
Примечание: CodeIgniter постоянно пытается загрузить конфигурационные файлы сперва для текущего окружения. Если файл не существует, используется глобальный файл (то есть один из application/config/). Это означает, что вы не обязаны размещать все ваши конфигурационные файлы в директории окружения - только те файлы, которые изменяются в зависимости от окружения.
Функции-помощники
Конфигурационный класс имеет следующие функции-помощники:
$this->config->site_url();
Эта функция получает URL вашего сайта, в соответствии со значением "index", который вы указали в конфигурационном файле.
$this->config->base_url();
Эта функция получает URL к вашему сайту, плюс опциональный путь, например к таблице стилей или изображению.
Две функции, описанные выше, обычно доступны через соответствующие функции в помощнике URL.
$this->config->system_url();
Функция получает URL вашей системной директории.