Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

CodeIgniter User Guide Version 2.1.0


Класс конфигурации (Config)

Класс конфигурации предоставляет средства для получения параметров конфигурации. Эти настройки могут быть прочитаны из конфигурационного файла по умолчанию (application/config/config.php) или из вашего собственного конфигурационного файла.

Примечание: Этот класс автоматически инициализируется системой, поэтому нет нужны загружать его вручную.

Анатомия конфигурационного файла

По умолчанию CodeIgniter имеет один первичный конфигурационный файл, который находится в application/config/config.php. Если вы откроете этот файл в текстовом редакторе, вы увидите элементы конфигурации, которые хранятся в массиве $config.

Вы можете добавлять собственные элементы конфигурации в этот файл, или вы можете предпочесть хранить ваши элементы конфигурации отдельно (конечно, если они вообще нужны вам). Просто создайте собственный файл и сохраните его в директорию config.

Примечание: Если вы создаете ваши собственные конфигурационные файлы, используйте тот-же формат, что и у первичного, храните ваши элементы в массиве $config. CodeIgniter будет интеллигентно управлять этими файлами, так, чтобы не допускать конфликтов (предполагая, что индексы массивов не называются также, как и другие).

Загрузка конфигурационного файла

Примечание: CodeIgniter автоматически загружает первичный конфигурационный файл (application/config/config.php), поэтому имеет смысл загружать вручную только ваши собственные файлы.

Есть два способа загрузить файл конфигурации:

  1. Ручная загрузка

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

    $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);
  2. Автозагрузка

    Если вы обнаружите, что конкретный конфигурационный файл используется глобально, вы можете сделать так, чтобы он автоматически загружался системой. Чтобы сделать это, откройте файл 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), сделайте следующее:

  1. Создайте директорию application/config/production/
  2. Скопируйте ваш существующий config.php в эту директорию
  3. Отредактируйте application/config/production/config.php так, чтобы он содержал ваши эксплуатационные настройки

Когда вы установите константу ENVIRONMENT в 'production', будут загружаться настройки из config.php для режима эксплуатации.

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

Примечание: CodeIgniter постоянно пытается загрузить конфигурационные файлы сперва для текущего окружения. Если файл не существует, используется глобальный файл (то есть один из application/config/). Это означает, что вы не обязаны размещать все ваши конфигурационные файлы в директории окружения - только те файлы, которые изменяются в зависимости от окружения.

Функции-помощники

Конфигурационный класс имеет следующие функции-помощники:

$this->config->site_url();

Эта функция получает URL вашего сайта, в соответствии со значением "index", который вы указали в конфигурационном файле.

$this->config->base_url();

Эта функция получает URL к вашему сайту, плюс опциональный путь, например к таблице стилей или изображению.

Две функции, описанные выше, обычно доступны через соответствующие функции в помощнике URL.

$this->config->system_url();

Функция получает URL вашей системной директории.

Поделиться


Переведено в компании Аринт.

Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter

Яндекс.Метрика