Класс Config
Класс Config предоставляет возможность извлечения настроек конфигурации. Эти настройки могут быть взяты из файла конфигурации по умолчанию (application/config/config.php) или из собственных пользовательских файлов конфигурации.
Примечание
Этот класс инициализируется системой автоматически, поэтому нет необходимости делать это вручную.
Работа с классом Config
Структура файла конфигурации
По умолчанию, CodeIgniter имеет один основной файл конфигурации, расположенный в application/config/config.php. Если вы откроете файл с помощью текстового редактора, вы увидите, что элементы конфигурации хранятся в массиве, называемом $config.
Вы можете добавить свои собственные элементы конфигурации в этот файл, или, если вы предпочитаете хранить элементы конфигурации отдельно (предполагая, что вам даже нужны элементы конфигурации), просто создайте свой собственный файл и сохраните его в папке config.
Примечание
Если вы создаете собственные файлы конфигурации, используйте тот же формат, что и основной, храня элементы в массиве под названием $config. CodeIgniter будет разумно управлять этими файлами, так что не возникнет конфликтов, даже если массив имеет то же имя (при условии, что индекс массива не имеет того же имени, что и другой).
Загрузка файла конфигурации
Примечание
CodeIgniter автоматически загружает основной файл конфигурации (application/config/config.php), поэтому вам нужно загружать файл конфигурации только если вы создали собственный.
Существует два способа загрузки файла конфигурации:
Ручная загрузка
Для загрузки одного из ваших пользовательских файлов конфигурации вы будете использовать следующую функцию внутри контроллера, которому она нужна:
$this->config->load('filename');
Где filename — имя вашего файла конфигурации без расширения .php.
Если вам нужно загрузить несколько файлов конфигурации, они обычно будут объединены в один массив master config. Однако могут возникнуть коллизии имен, если у вас есть идентичные индексы массива в разных файлах конфигурации. Чтобы избежать коллизий, вы можете установить второй параметр в TRUE, и каждый файл конфигурации будет сохранен в индексе массива, соответствующем имени файла конфигурации. Пример:
// Stored in an array with this prototype: $this->config['blog_settings'] = $config
$this->config->load('blog_settings', TRUE);
См. раздел «Получение элементов конфигурации» ниже, чтобы узнать, как извлечь элементы конфигурации, установленные таким образом.
Третий параметр позволяет подавлять ошибки в случае, если файл конфигурации не существует:
$this->config->load('blog_settings', FALSE, TRUE);
Автоматическая загрузка
Если вы обнаружите, что вам нужен определенный файл конфигурации глобально, вы можете сделать так, чтобы он загружался автоматически системой. Для этого откройте файл autoload.php, расположенный в application/config/autoload.php, и добавьте свой файл конфигурации, как указано в файле.
Получение элементов конфигурации
Чтобы извлечь элемент из файла конфигурации, используйте следующую функцию:
$this->config->item('item_name');
Где item_name — индекс массива $config, который вы хотите извлечь. Например, чтобы получить ваш выбор языка, вы сделаете это:
$lang = $this->config->item('language');
Функция возвращает NULL, если элемент, который вы пытаетесь получить, не существует.
Если вы используете второй параметр функции $this->config->load, чтобы назначить элементы конфигурации определенному индексу, вы можете получить их, указав имя индекса во втором параметре функции $this->config->item(). Пример:
// Loads a config file named blog_settings.php and assigns it to an index named "blog_settings"
$this->config->load('blog_settings', TRUE);
// Retrieve a config item named site_name contained within the blog_settings array
$site_name = $this->config->item('site_name', 'blog_settings');
// An alternate way to specify the same item:
$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 так, чтобы он содержал ваши настройки для среды production
Когда вы установите константу ENVIRONMENT в ‘production’, будут загружены настройки из нового файла config.php, специфичного для среды production.
Вы можете поместить следующие файлы конфигурации в папки, специфичные для среды:
- Файлы конфигурации CodeIgniter по умолчанию
- Свои собственные пользовательские файлы конфигурации
Примечание
CodeIgniter всегда сначала загружает глобальный файл конфигурации (то есть тот, что находится в application/config/), а затем пытается загрузить файлы конфигурации для текущей среды. Это означает, что вам не обязательно размещать все файлы конфигурации в папке, специфичной для среды. Достаточно только тех файлов, которые меняются в зависимости от среды. Кроме того, вам не нужно копировать все элементы конфигурации в файл конфигурации среды. Достаточно только тех элементов конфигурации, которые вы хотите изменить для вашей среды. Элементы конфигурации, объявленные в ваших папках, специфичных для среды, всегда переопределяют те, что находятся в ваших глобальных файлах конфигурации.
Справочник класса
-
class CI_Config -
-
$config -
Массив всех загруженных значений конфигурации
-
$is_loaded -
Массив всех загруженных файлов конфигурации
-
item($item[, $index='']) -
Параметры: - $item (string) – Имя элемента конфигурации
- $index (string) – Имя индекса
Возвращает: Значение элемента конфигурации или NULL, если не найдено
Тип возвращаемого значения: смешанный
Получение значения элемента конфигурации.
-
set_item($item, $value) -
Параметры: - $item (string) – Имя элемента конфигурации
- $value (string) – Значение элемента конфигурации
Тип возвращаемого значения: void
Устанавливает значение элемента конфигурации.
-
slash_item($item) -
Параметры: - $item (string) – Имя элемента конфигурации
Возвращает: Значение элемента конфигурации с конечным слешем или NULL, если не найдено
Тип возвращаемого значения: смешанный
Этот метод идентичен
item(), за исключением того, что он добавляет конечный слеш к имени элемента, если он существует.
-
load([$file = ''[, $use_sections = FALSE[, $fail_gracefully = FALSE]]]) -
Параметры: - $file (string) – Имя файла конфигурации
- $use_sections (bool) – Нужно ли загружать значения конфигурации в отдельные секции (индекс основного массива конфигурации)
- $fail_gracefully (bool) – Возвращать FALSE или выводить сообщение об ошибке
Возвращает: TRUE при успехе, FALSE при неудаче
Тип возвращаемого значения: bool
Загрузка файла конфигурации.
-
site_url() -
Возвращает: URL сайта Тип возвращаемого значения: string Этот метод извлекает URL вашего сайта, вместе со значением «index», указанным в файле конфигурации.
К этому методу обычно обращаются через соответствующие функции в помощнике URL.
-
base_url() -
Возвращает: Базовый URL Тип возвращаемого значения: string Этот метод извлекает URL вашего сайта, плюс необязательный путь, такой как к таблице стилей или изображению.
К этому методу обычно обращаются через соответствующие функции в помощнике URL.
-
system_url() -
Возвращает: URL, указывающий на ваш каталог CI system/ Тип возвращаемого значения: string Этот метод извлекает URL вашего каталога CodeIgniter system/.
Примечание
Этот метод устарел, так как он поощряет использование небезопасных кодировочных практик. Ваш каталог system/ не должен быть доступен для публичного доступа.
-
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/config.html