als/config
Composer 安装命令:
composer require als/config
包简介
Config Manager Component.
README 文档
README
Config Manager Component.
Designed to simplify access to configuration data within applications. The configuration data may come from a variety of formats supporting hierarchical data storage. Currently provides adapters that read configuration data stored in INI, JSON and XML files.
Пример использования
# Создаем объект класса '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": ""
}
}
}
}
TODO
- Написать метод "@parse[]", что бы можно было нетолько загружать данные из файлов.
- Написать метод "@save[]", что бы можно было сохранять конфиги.
- Парсинг аттрибутов в XML, сейчас конфиги формата '.xml' парсятся без учете аттрибутов.
References
- Questions to Leonid Knyazev leonid@knyazev.me | n3o@design.ru
- Bug reports and Feature requests to Issues.
als/config 适用场景与选型建议
als/config 是一款 基于 OpenEdge ABL 开发的 Composer 扩展包,目前已累计 127 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 02 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「config」 「als」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 als/config 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 als/config 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 als/config 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Zend Framework module to quickly and easily set PHP settings.
Server environment detection based on config array-file
Single and multi-dimensional parameter bag with dot-path access for PHP.
Laravel provider to be able to rewrite configuration
Date Component.
Advanced configuration manager for PHP with dotted-path access, file/directory/class loaders and a static facade.
统计信息
- 总下载量: 127
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-02-24