berlioz / config
Berlioz 配置是一个用于管理配置文件的 PHP 库。
Requires
- php: ^8.0
- berlioz/helpers: ^1.2
- colinodell/json5: ^2.2
Requires (Dev)
- ext-yaml: *
- phpunit/phpunit: ^9.5
- symfony/yaml: ^5.0
Suggests
- ext-yaml: To use YamlAdapter
- symfony/yaml: To use YamlAdapter
This package is auto-updated.
Last update: 2024-08-26 13:14:22 UTC
README
Berlioz 配置是一个用于管理配置文件的 PHP 库。
安装
Composer
您可以使用 Composer 安装 Berlioz 配置,这是推荐的安装方式。
$ composer require berlioz/config
依赖关系
- PHP ^8.0
- 包
- berlioz/helpers
- colinodell/json5
用法
创建配置对象
您可以使用适配器来创建配置。有 3 个默认适配器可用
ArrayAdapter
:接受 PHP 数组IniAdapter
:接受 INI 字符串或文件JsonAdapter
:接受 JSON/JSON5 字符串或文件
示例
use Berlioz\Config\Adapter; use Berlioz\Config\Config; $arrayAdapter = new Adapter\ArrayAdapter([/*...*/]); $iniAdapter = new Adapter\IniAdapter('/path/of-project/config/config.ini', true); $jsonAdapter = new Adapter\JsonAdapter('/path/of-project/config/config.json', true); $config = new Config([$arrayAdapter, $jsonAdapter, $iniAdapter]); print $config->get('foo.bar.qux'); // Print value of configuration
IniAdapter
和 JsonAdapter
构造函数的第二个参数定义了第一个参数是一个 URL。
适配器的顺序很重要,第一个具有优先权... 因此,get
方法返回的第一个适配器对键的响应。如果值是一个数组,它将与所有适配器合并。
为了提高灵活性,您可以在适配器的构造函数中通过一个整数定义优先级,使用参数 priority
。
获取值
要获取值,您必须调用 get
方法
$config = new \Berlioz\Config\Config(/* ... */); $config->get('foo'); // Returns value of key 'foo' $config->get('foo.bar'); // Returns value of nested key 'foo.bar' $config->get('baz', true); // Returns value of key 'baz' or TRUE default value if key does not exist
ConfigInterface::get()
方法的第二个参数是键不存在时的默认值。此参数的默认值是 NULL
。
您还可以测试键是否存在
$config = new \Berlioz\Config\Config(/* ... */); $exists = $config->has('foo'); // Returns boolean
函数
Config
对象接受一系列函数。调用函数的语法是:{functionName:value}
。
函数调用必须单独出现在配置键的值中。
默认函数
config
:用配置的另一个部分替换值constant
:用常量替换值env
:用环境变量替换值var
:用变量值替换值file
:用文件内容替换值
示例
use Berlioz\Config\Adapter; use Berlioz\Config\Config; define('FOO', 'foo constant value'); $arrayAdapter = new Adapter\ArrayAdapter([ 'foo' => '{constant:FOO}', 'bar' => [ 'foo' => 'value2', ], 'baz' => '{config: bar.foo}', 'qux' => '{var: BAR}' ]); $config = new Config([$arrayAdapter], ['BAR' => 'bar value']); print $config->get('foo'); // Print "foo constant value" print $config->get('baz'); // Print "value2" print $config->get('qux'); // Print "bar value" print_r($config->get('bar')); // Print array "['foo' => 'value2']"
变量
您可以使用 var
函数定义在配置中可用的变量。
在构造函数中定义变量
// Define variable in an array $variables = [ 'foo' => 'foo value', 'bar' => 'bar value', ]; $config = new \Berlioz\Config\Config(variables: $variables);
您还可以在配置实例化后操作变量。变量存储在 ArrayObject
对象中,可以通过 Config::getVariables()
方法访问
$config = new \Berlioz\Config\Config(); // Set variables $config->getVariables()['foo'] = 'foo value'; $config->getVariables()['bar'] = 'bar value'; // Unset a variable unset($config->getVariables()['bar']);
扩展库
创建适配器
您可以创建自己的适配器。只需实现 \Berlioz\Config\Adapter\AdapterInterface
接口。
此接口只有 3 个方法
AdapterInterface::getPriority(): int
ConfigInterface::get(string $key, mixed $default = null): mixed
ConfigInterface::has(string $key): bool
查看库的源代码中的现有适配器以获取灵感。
创建函数
您可以创建自己的函数。只需实现 \Berlioz\Config\ConfigFunction\ConfigFunctionInterface
接口。
此接口只有 2 个方法
ConfigFunctionInterface::getName(): string
ConfigFunctionInterface::execute(string $str): mixed
查看库的源代码中的现有函数以获取灵感。