====== Пакет CONFIG ======
Пакет CONFIG - это набор классов, облегчающих работу с конфигурационными данными.
===== Классы пакета =====
^Класс^Назначение^
|[[.config:lmbConf|lmbConf]]|Класс, который позволяет получает конфигурационные данные из php-файлов, содержащих переменную $conf внутри них.|
|[[.config:lmbIni|lmbIni]]|Класс, который позволяет получать конфигурационные данные из ini-файлов, немного схожим образом по функциональностью с PHP функцией parse_ini_file().|
|[[.config:lmbCachedIni|lmbCachedIni]]|Дочерний класс от lmbIni, которых позволяет кешировать уже отпарсированные данные ini-файлов.|
===== Использование =====
* **ini-файлы** используются в ситуациях, когда формат конфигурационных данных не слишком сложный (простые массивы, линейные свойства), а также нужно обеспечить возможность частичного перекрытия конфигурационных данных на том или ином сервере.
* **conf-файлы** используются когда механизм формирования конфигурационных данных весьма сложен и требует выполнения php-кода, завит от каких-либо условий. Хотя в последнее время мы постепенно пришли к использования .conf файлов во всех случаях - для унификации.
Для получения объекта lmbIni класса или lmbConf класса используется метода тулкита, которые предоставляет класс lmbConfTools :: **getConf($name)**. В качестве параметра передается название файла с конфигурационными данными. То, какого класса будет создан объект, зависит от расширения имени файла:
* .conf.php - lmbConf
* .ini - lmbIni (вернее lmbCachedIni в большинстве случаев).
Пример использования:
$conf = lmbToolkit :: instance()->getConf('db.conf.php');//вернется объект lmbConf
$ini = lmbToolkit :: instance()->getConf('my.ini');//здесь - lmbIni
===== Где осуществляется поиск файлов с конфигурационными данными? =====
То, где искать файлы с настроечными данными, определяется через константу **LIMB_CONF_INCLUDE_PATH**. Значение этой констранты - список путей через ";" указывающих директории относительно include_path, в которых стоит производить поиск настроечных файлов. По умолчанию "settings;limb/*/settings", то есть в папке settings приложения и всех папках settings пакетов Limb3. Обычно полезно переопределять эту константу в тестах.
Пример использования:
@define('LIMB_INI_INCLUDE_PATH', 'tests/settings;settings');
Подробнее [[http://wiki.limb-project.com/doku.php?id=limb3_2007_4:ru:constants|о константах в Limb3]]