raphhh / puppy-config
配置管理器
Requires
- php: >=5.5.9
- symfony/yaml: ^3.0
Requires (Dev)
- phpunit/phpunit: @stable
This package is auto-updated.
Last update: 2024-08-25 21:37:50 UTC
README
Puppy Config 是一个配置管理器,它根据您的环境从文件中加载配置。
配置基本逻辑
- 环境配置管理(开发、测试、生产等)
- 支持多种文件格式(php、ini、json、yaml)
- 动态配置值
- 可见性限制
安装
运行 composer
$ composer require raphhh/puppy-config
读取配置
添加主配置文件 /config/global.php
// /config/global.php return [ 'key' => 'value', ];
启动 Config 类
use Puppy\Config\Config; $config = new Config(); $config['key']; //'value'
动态值
您可以使用键检索之前定义的值。
// /config/global.php return [ 'key1' => 'value1', 'key2' => '%key1%_b', ];
use Puppy\Config\Config; $config = new Config(); $config['key2']; //'value1_b'
设置新值
您可以在运行时设置新值,这些值将在整个脚本中可用(但不保存到文件配置中)。
use Puppy\Config\Config; $config = new Config(); $config['new_key'] = 'new_value';
您还可以使用动态映射。
$config['new_key2'] = '%new_key%'; $config['new_key2']; //'new_value'
可见性限制
您可以在配置中确定一些命名空间,并限制每个命名空间的可见性。
例如,假设您设置了以下配置,包含两个命名空间:'a' 和 'b'。
//namespace a $globalConfig['a.a'] = 'a.a'; $globalConfig['a.b'] = 'a.b'; //namespace b $globalConfig['b.a'] = 'b.a'; $globalConfig['b.b'] = 'b.b';
使用全局作用域配置,您可以访问所有值。
$globalConfig['a.a']; //'a.a' $globalConfig['b.a']; //'b.a'
现在,将配置限制为命名空间 'a'。
$restrictedConfig = $globalConfig->restrict('a');
使用此限制作用域配置,您只能访问命名空间 'a' 的值
$restrictedConfig['a']; //'a.a' $restrictedConfig['b']; //'a.b'
原始键不再可见
isset($restrictedConfig['a.a']); //false isset($restrictedConfig['b.a']); //false
但是,全局作用域配置仍然绑定到您的限制作用域。因此,如果您修改其中一个,另一个也会被修改。
$restrictedConfig['a'] = 'new value'; $globalConfig['a.a']; //'new value'
文件格式
默认情况下,Config 加载 'php' 文件。此类文件必须返回一个 PHP 数组。
// /config/global.php return [ 'key' => 'value', ];
但您可以指定或添加特定的文件格式。
new Config('', null, new YmlFileReader()); //will load config/global.yml
支持的格式
- php(默认)
- ini
- json
- yaml
多环境
您的配置是来自三种类型文件的值的合并
何时加载全局配置?
在所有情况下,Config 都会加载文件 'global.php'。(您可以轻松更改此默认文件。)
默认情况下,这是您的生产配置。
何时加载环境配置?
如果您在构造函数中指定了环境,它也会加载相关的文件。
例如
new Config('dev'); //will load dev.php (in addition to global.php)
环境配置将覆盖全局配置。因此,请将其用于开发环境,它将覆盖您的生产参数。
环境如何动态更改?
在您的服务器虚拟主机配置中设置一个环境变量,并使用 php getenv() 方法 检索它。
在您的 httpd.conf 或开发 Apache 服务器的 .htaccess 文件中,输入
SetEnv APP_ENV "dev"
在您的 PHP 文件中检索环境
new Config(getenv('APP_ENV')); //will load dev.php only in your dev server
什么是本地配置?
如果存在文件 config/local.php,配置将加载本地配置。
此配置将覆盖全局和环境配置。请注意:此文件不得进行版本控制。
因此,这是一个个人配置,您可以在其中放置临时或特定配置。您还可以放置不想进行版本控制的配置,例如密码。