beatlabs/load

PHP配置加载库

v1.1.1 2021-09-09 14:24 UTC

This package is not auto-updated.

Last update: 2024-09-21 03:31:45 UTC


README

LOAD是一个用于将配置加载到APCu的PHP库

来源

可用于配置加载的来源包括:

  • PHP文件
  • Consul
  • 环境变量

安装

您可以使用以下命令通过Composer安装load

composer require beatlabs/load

使用方法

PHP文件

您可以读取一个返回数组的PHP文件。

例如,使用config.php

return [
    'var' => [
        'sub-var' => 'sub-val',
        'val',
    ]   
];

您可以这样做

$loader = new BeatLabs\Load\Loader\PHPLoader('config.php'); // Config file
$config = new BeatLabs\Load\Config([$loader]);
$config->load();

// Get configuration values
$val = $config->get('var');

Consul(默认服务器localhost:8500

$loader = new BeatLabs\Load\Loader\ConsulLoader();
$config = new BeatLabs\Load\Config([$loader]);
$config->load();

// Get configuration values
$val = $config->get('var');

Consul(自定义服务器myhost:8000,根路径"services/my-service")

// You can get all available options here: https://docs.guzzlephp.org/en/6.5/quickstart.html#creating-a-client
$options = [
    "base_uri" => "myhost:8000"
];
$loader = new BeatLabs\Load\Loader\ConsulLoader('services/my-service', $options);

$config = new BeatLabs\Load\Config([$loader]);
$config->load();

// Get configuration values
$val = $config->get('var');

环境变量

您可以为环境变量设置一个前缀,这样您就只包含以该前缀开头的环境变量。这允许您只加载所需的内容,而不是整个环境作为配置。

// Set variable
$loader = new BeatLabs\Load\Loader\EnvLoader('PREFIX_'); // Define environment variables prefix to be loaded
$config = new BeatLabs\Load\Config([$loader]);
$config->load();

// Get configuration values
$val = $config->get('var');

多个加载器

$consulLoader = new BeatLabs\Load\Loader\ConsulLoader();
$fileLoader = new BeatLabs\Load\Loader\PHPLoader('config.php');
$envLoader = new BeatLabs\Load\Loader\EnvLoader('PREFIX_');
$config = new BeatLabs\Load\Config([$consulLoader, $fileLoader, $envLoader]);
$config->load();

// Get configuration values
$val = $config->get('var');

加载器将按定义的顺序执行。每个加载器都将覆盖之前加载器加载的任何配置。

自定义缓存

默认情况下,load使用APCu来缓存配置,但您可以通过实现BeatLabs\Load\Interfaces\Cache接口并设置到Config构造函数来使用自己的缓存(例如Redis、Memcache等)。

例如

$cache = new CustomCache();
$loader = new BeatLabs\Load\Loader\PHPLoader('config.php'); // Config file
$config = new BeatLabs\Load\Config([$loader], $cache);
$config->load();

配置扁平化

具有嵌套子值的配置值将被扁平化,并且可以不经过进一步处理进行检索。

例如

config.php

return [
    'var' => [
        'sub-var' => 'sub-val',
        'val',
    ]   
];

将表现得像这样

$loader = new BeatLabs\Load\Loader\PHPLoader('config.php'); // Config file
$config = new BeatLabs\Load\Config([$loader]);
$config->load();

// Get configuration values
$val1 = $config->get('var'); // $val = ['sub-var' => 'sub-val, 'val']
$val2 = $config->get('var.sub-var'); // $val = 'sub-val'

默认分隔符是.,但您可以在Config构造函数中设置自己的。

例如

$loader = new BeatLabs\Load\Loader\PHPLoader('config.php'); // Config file
$config = new BeatLabs\Load\Config([$loader], null, '_');
$config->load();

// Get configuration values
$val1 = $config->get('var'); // $val = ['sub-var' => 'sub-val, 'val']
$val2 = $config->get('var_sub-var'); // $val = 'sub-val'

重新加载配置

可以通过向运行CLI脚本的PHP进程发送SIGUSR2或在php-fpm主进程中的HTTP脚本中发送SIGUSR2来重新加载配置。

重新加载也可以通过以下代码在代码中触发:

$config->reload();

如何贡献

请参阅贡献指南

行为准则

请注意,该项目是以贡献者行为准则发布的。通过参与此项目和其社区,您同意遵守这些条款。

变更日志

您可以在这里查看变更日志