berlioz/config

Berlioz 配置是一个用于管理配置文件的 PHP 库。

v2.2.0 2023-06-26 10:47 UTC

README

Latest Version Software license Build Status Quality Grade Total Downloads

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

IniAdapterJsonAdapter 构造函数的第二个参数定义了第一个参数是一个 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

查看库的源代码中的现有函数以获取灵感。