als / config
配置管理组件。
1.0.0
2019-02-19 10:49 UTC
Requires (Dev)
- parser/composer: ^1.0
This package is auto-updated.
Last update: 2024-09-24 18:01:54 UTC
README
配置管理组件。
旨在简化应用程序中对配置数据的访问。配置数据可能来自支持分层数据存储的各种格式。目前提供适配器,用于读取存储在INI、JSON和XML文件中的配置数据。
使用示例
# Создаем объект класса 'Als/Config': $config[^Als/Config::create[]] # Читаем конфиги из файлов: ^config.read[/path/to/config_ini.ini] ^config.read[/path/to/config_xml.xml] ^config.read[/path/to/config_json.json] # Тпереь нам доступны конфиги по ключам из названий файлов: $ini[$config.config_ini] $xml[$config.config_xml] $json[$config.config_json] # Так же при чтение файлов, мы можем указать ключ, по которому данные будут доступны: ^config.read[cache;/path/to/cache.ini] #--> $config.cache
创建对象的参数
# При создании объекта класса 'Als/Config', мы можем указать папку с конфигами: $config[^Als/Config::create[ $.root[/path/to/configs] ]] # Теперь при чтении конфигов, нам не надо указывать полный путь к файлу с конфигом: ^config.read[database.xml] # Так, же при создании объекта класса 'Als/Config', мы можем указать список # конфигов, которые будут автоматически загружены во время создания экземпляра класса: # # Аргумент $.configs[] передается в виде хеша, в котором: # 'ключ' - это ключ по которому будут доступны данные конфига в объекте класса # 'значение' - путь к файлу с конфигурационными данными $config[^Als/Config::create[ $.configs[ $.cache[cache.ini] $.database[database.xml] ] ]]
访问配置数据的方法
# Создаем объект класса 'Als/Config': $config[^Als/Config::create[]] # Читам конфигурационные данные из файла 'database.json', со следующим содержимым: # { # "debug": true, # "cache": { # "path": "/path/to/database/cache" # } # } ^config.read[db;/path/to/database.json] # Теперь мы можем получать конфигурационные данные, обращаясь к объекту '$config', как к хешу: $debug($config.db.debug) # Так же мы можем воспользоваться методом '^get[]' (для разделения вложенности используются точки): $path[^config.get[db.cache.path]] # Если вызвать метод '^get[]' без аргументов, то он вернёт хеш со всеми ранее загруженными конфигами: $configs[^config.get[]]
配置示例
INI格式
; некоторый комментарий # комментарий в стиле Unix # Значения без секции param1=value1 ; иногда допускается комментарий к отдельному параметру param2=value2 [section] ; комментарий о разделе param1=section.value1 # иногда допускается комментарий к отдельному параметру param2=section.value2 [section.subsection] param1=section.subsection.value1 param2=section.subsection.value2 ; иногда позволяется перечислять несколько значений через запятую [section.subsection2] param1=section.subsection2.value1 param2=section.subsection2.value2 [section.subsection2.subsection3] param1=section.subsection2.subsection3.value1 param2=section.subsection2.subsection3.value2 ; Иногда значения отсутствуют [section.subsection2.subsection4] [section.subsection2.subsection5] param1= param2=
XML格式
<?xml version="1.0" encoding="UTF-8" ?> <config> <param1>value1</param1> <param2>value2</param2> <section> <param1>section.value1</param1> <param2>section.value2</param2> <subsection> <param1>section.subsection.value1</param1> <param2>section.subsection.value2</param2> </subsection> <subsection2> <param1>section.subsection2.value1</param1> <param2>section.subsection2.value2</param2> <subsection3> <param1>section.subsection2.subsection3.value1</param1> <param2>section.subsection2.subsection3.value2</param2> </subsection3> <subsection4></subsection4> <subsection5> <param1></param1> <param2></param2> </subsection5> </subsection2> </section> </config>
JSON格式
{ "param1": "value1", "param2": "value2", "section": { "param1": "section.value1", "param2": "section.value2", "subsection": { "param1": "section.subsection.value1", "param2": "section.subsection.value2" }, "subsection2": { "param1": "section.subsection2.value1", "param2": "section.subsection2.value2", "subsection3": { "param1": "section.subsection2.subsection3.value1", "param2": "section.subsection2.subsection3.value2" }, "subsection4": {}, "subsection5": { "param1": "", "param2": "" } } } }
待办事项
- 编写"@parse[]"方法,以便不仅可以从文件中加载数据。
- 编写"@save[]"方法,以便可以保存配置。
- 解析XML中的属性,目前'.xml'格式的配置文件在解析时不考虑属性。
参考
- 有关Leonid Knyazev的问题 leonid@knyazev.me | n3o@design.ru
- 有关错误报告和功能请求,请访问问题。