beatlabs / load
PHP配置加载库
Requires
- php: >=7.2
- ext-apcu: *
- ext-json: *
- ext-pcntl: *
- sensiolabs/consul-php-sdk: ^3.1
Requires (Dev)
- phpunit/phpunit: ^8
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();
如何贡献
请参阅贡献指南
行为准则
请注意,该项目是以贡献者行为准则发布的。通过参与此项目和其社区,您同意遵守这些条款。
变更日志
您可以在这里查看变更日志