davidlienhard / config
🐘 从 JSON 文件中获取配置数据的 PHP 库
2.4.8
2023-10-04 11:56 UTC
Requires
- php: ^8.0
- ext-json: ^8.0
- davidlienhard/functioncaller: ^1
- league/flysystem: ^3
- nette/neon: ^3
- symfony/yaml: ^6
Requires (Dev)
README
🐘 从 JSON/yaml 文件中获取配置数据的 PHP 库
设置
您可以使用 composer 安装
composer require davidlienhard/config:^2
注意:davidlienhard/config 需要 PHP 8.0
示例
设置
<?php declare(strict_types=1); use DavidLienhard\Config\Config; try { $config = new Config("path/to/config"); } catch (\Throwable $t) { echo "unable to setup config"; exit(1); }
读取数据
示例配置文件: system.json
{
"name": "test",
"list1": {
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
},
"list2": [
"value1",
"value2",
"value3",
"value4"
]
}
获取单个值
<?php declare(strict_types=1); echo $config->get("system", "name"); /* test */ echo $config->get("system", "list1", "key1"); /* value1 */
获取具有特定类型的单个值
<?php declare(strict_types=1); echo $config->getAsString("system", "name"); /* if the value exists and is not an array, it will return a string in any case if the value is an array, this will throw an exception if the value does not exist this will return null */
以下方法也存在
getAsString()getAsInt()getAsFloat()getAsBool()getAsArray()
获取关联数组
<?php declare(strict_types=1); print_r($config->get("system", "list1")); /* Array ( [key1] => value1 [key2] => value2 [key3] => value3 [key4] => value4 ) */
获取数字数组
<?php declare(strict_types=1); print_r($config->get("system", "list2")); /* Array ( [0] => value1 [1] => value2 [2] => value3 [3] => value4 ) */
获取不存在的值
<?php declare(strict_types=1); var_dump($config->get("system", "doesnotexist")); /* NULL */
从不存在的文件中获取数据
<?php declare(strict_types=1); var_dump($config->get("doesnotexist")); /* throws \Exception */
解析器/支持的文件类型
默认情况下,此库包含两个解析器。一个是用于 Json,另一个是用于 Yaml/Yml 文件。如果需要,可以添加一个自定义解析器以支持其他文件类型,例如 XML 或 INI。自定义解析器必须扩展类 ParserAbstract 并实现接口 ParserInterface。解析器可以按以下方式注册
<?php declare(strict_types=1); try { $config->registerParser(\your\custom\parser::class); } catch (ConfigException $e) { die("unable to register custom parser"); }
异常
该库目前包含以下异常
Config- 所有其他异常的父异常Conversion- 类型转换过程中发生的错误。例如,尝试将字符串转换为数组Mismatch- 尝试访问不可用的配置数据FileMismatch- 尝试访问不存在的文件Parser- 解析文件时发生的错误。通常是通过无效的文件引起的
KeyMismatch- 尝试访问不存在的键,而文件是存在的
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE。