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