phossa / phossa-config
PHP配置管理库
Requires
- php: >=5.4.0
- phossa/phossa-shared: *
Requires (Dev)
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-14 19:31:05 UTC
README
查看新的库phoole/config
简介
phossa-config 是一个PHP配置管理库。其设计理念受到了github项目 mrjgreen/config
的启发,但增加了许多酷炫的功能。
它需要PHP 5.4,并支持PHP 7.0+,HHVM。它遵循 PSR-1,PSR-2,PSR-4。
特性
-
所有配置文件集中存放
config/ | |____ production/ | | | |____ host1/ | | |___ redis.php | | |___ db.php | | | |____ db.php | |____ system.php |____ db.php |____ redis.php
-
使用环境值,例如
production
或production/host1
来在开发
、测试
或生产
之间切换。 -
支持
.php
、.json
、.ini
和.xml
类型的配置文件。 -
可以在配置文件和环境文件中使用
参考
,例如配置文件中的${system.tmpdir}
和环境文件中的${system.tmpdir}
。 -
按需配置加载(延迟加载)。
-
可以使用
$config->get(null)
一次性加载所有配置文件。 -
配置缓存。
-
具有点符号的层次配置结构,例如
db.auth.host
。// returns an array $db_config = $config->get('db'); // returns a string $db_host = $config->get('db.auth.host');
-
完全支持扁平符号和数组符号,并可同时共存。
// db config file return [ // array notation 'auth' => [ 'host' => 'localhost', 'port' => 3306 ], // flat notation 'auth.user' => 'dbuser' ];
-
支持Unix shell风格的环境文件'.env',具有解引用功能和类似
${__DIR__}
和${__FILE__}
的魔法环境值。
安装
通过composer
工具安装。
composer require "phossa/phossa-config=1.*"
或者在您的composer.json
中添加以下行
{ "require": { "phossa/phossa-config": "1.*" } }
用法
-
通常运行环境因服务器而异。一个好的做法是在安装根目录下设置环境变量,并将所有配置文件放在
config/
目录中。示例
.env
文件:# debugging true|false, change to 'false' ON production server APP_DEBUG=true # App environment, change to 'prod' ON production server APP_ENV=dev # app root directory, default to current dir APP_ROOT=${__DIR__} # central configuration directory CONFIG_DIR=${APP_ROOT}/config
在
bootstrap.php
文件中:// load environment (new Phossa\Config\Env\Environment())->load(__DIR__.'/.env'); // create config object $config = new Phossa\Config\Config( getenv('CONFIG_DIR'), // loaded from .env file getenv('APP_ENV') // loaded from .env file ); // load all configs in one shot $conf_data = $config->get(null);
-
配置被分组到组中,即文件。例如,
system.php
包含了所有的system.*
配置。// system.php return [ 'tmpdir' => '/usr/local/tmp', ... ];
稍后,可以通过以下方式检索系统相关的配置:
$dir = $config->get('system.tmpdir');
或在其他配置中作为参考使用。
-
可以将缓存池传递给配置构造函数,以便它从缓存中读取所有配置或将所有配置保存到缓存中。
// create config object $config = new Phossa\Config\Config( dirname(__DIR__) . '/config', // the config dir 'staging/server2', // config env 'php', // file type new Phossa\Config\Cache\Cache(__DIR__ . '/cache') // cache location ); // if cache exists, this will read all configs from the cache $conf_data = $config->get(null); // ... // write to cache $config->save();
-
使用缓存的优点
-
加速。只从一个文件中读取,而不是从许多配置文件中读取。
-
例如
${system.tmpdir}
这样的引用
已经完成。
-
-
使用缓存的缺点
-
配置数据可能过时。需要使用
$config->save()
来覆盖或使用$cache->clear()
来清除缓存。 -
需要写入缓存目录的权限。
-
如果不小心处理缓存数据,可能会暴露您的配置。
-
-
-
引用使得配置管理变得容易。
例如,在
system.php
// group: system return [ 'tmpdir' => '/var/local/tmp', ... ];
在你的
cache.php
文件中,// group: cache return [ // a local filesystem cache driver 'local' => [ 'driver' => 'filesystem', 'params' => [ 'root_dir' => '${system.tmpdir}/cache', 'hash_level' => 2 ] ], ... ];
你可以重置引用的开始和结束字符,
// now reference is something like '%system.tmpdir%' $config = (new Config())->setReferencePattern('%', '%');
甚至禁用引用功能,
// now reference is not recognised $config = (new Config())->setReferencePattern('', '');
-
如果环境设置为
production/host1
,则优先级顺序为,-
config/production/host1/db.php
优先于 -
config/production/db.php
优先于 -
config/config/db.php
-
-
-
get($key, $default = null)
$key
是一个平面表示法,如db.auth.host
或NULL
来获取所有配置。$default
在找不到配置时使用。返回值可能是一个
string
或array
,取决于$key
。 -
set($key, $value)
在此 会话 中手动设置配置。除非你手动修改配置文件,否则该值不会反映在任何配置文件中。
$value
可以是一个string
或array
。 -
has($key)
测试
$key
是否存在。返回一个boolean
值。 -
save()
将当前完整配置保存到缓存中。
-
更改
- 1.0.6 添加了
setReferencePattern()
、hasReference()
和deReference()
依赖
-
PHP >= 5.4.0
-
phossa/phossa-shared ~1.0.10