====== Пакет CONFIG ====== Пакет CONFIG - это набор классов, облегчающих работу с конфигурационными данными. ===== Классы пакета ===== ^Класс^Назначение^ |[[.config:lmb_conf|lmbConf]]|Класс, который позволяет получает конфигурационные данные из php-файлов, содержащих переменную $conf внутри них.| |[[.config:lmb_ini|lmbIni]]|Класс, который позволяет получать конфигурационные данные из ini-файлов, немного схожим образом по функциональностью с PHP функцией parse_ini_file().| |[[.config:lmb_cached_ini|lmbCachedIni]]|Дочерний класс от lmbIni, которых позволяет кешировать уже отпарсированные данные ini-файлов.| |[[.config:yaml_details|lmbYaml]]|Обертка вокруг других классов, работающих с Yaml.| |[[.config:yaml_details|lmbYamlParser]]|Класс разбирающий Yaml-файлы.| |[[.config:yaml_details|lmbYamlDumper]]|Класс предназначен для экспорта php-массива в Yaml-формат.| |[[.config:yaml_details|lmbYamlInline]]|Класс разбирающий/экспортирующий Yaml-данные в однсторочном(inline) формате.| ===== Использование ===== * **ini-файлы** используются в ситуациях, когда формат конфигурационных данных не слишком сложный (простые массивы, линейные свойства), а также нужно обеспечить возможность частичного перекрытия конфигурационных данных на том или ином сервере. * **conf-файлы** используются когда механизм формирования конфигурационных данных весьма сложен и требует выполнения php-кода, завит от каких-либо условий. Хотя в последнее время мы постепенно пришли к использования .conf файлов во всех случаях - для унификации. * **yml-файлы** используются для удобства записи объемных конфигураций с большой вложенностью. Возможно включение PHP-кода в yml-файлы. [[.config:yaml_details|Несколько подробнее о yaml]]. Для получения объекта Yaml, lmbIni класса или lmbConf класса используется метод тулкита, который предоставляет класс lmbConfTools :: **getConf($name)**. В качестве параметра передается название файла с конфигурационными данными. То, какого класса будет создан объект, зависит от расширения имени файла: * .conf.php - lmbConf * .ini - lmbIni (вернее lmbCachedIni в большинстве случаев). * .yml - lmbIni (вернее lmbCachedIni в большинстве случаев). Пример использования: $conf = lmbToolkit :: instance()->getConf('db.conf.php');//вернется объект lmbConf $ini = lmbToolkit :: instance()->getConf('my.ini');//здесь - lmbIni $yaml = lmbToolkit :: instance()->getConf('bar.yml');//Вернется lmbObject, содержащий конфигурацию из Yaml-файла ===== Override-файлы ===== Для того чтобы перекрывать часть свойств, не затрагивания оригинальный конфиг, рекомендуется использовать механизм override-файлов. Override-файл - это отдельный файл, свойства которого "накладываются" на оригинальные. Названия файлов зависят от формата конфигурационных файлов (подробности на странице форматов). ===== Где осуществляется поиск файлов с конфигурационными данными? ===== То, где искать файлы с настроечными данными, определяется через константу **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:ru:constants|о константах в Limb3]]