lokhman / silex-config
Silex 2.0+ 轻量级框架配置服务提供商
2.0.2
2017-03-08 11:55 UTC
Requires
- silex/silex: ~2.0
Requires (Dev)
- phpunit/phpunit: ^5.7 || ^6.0
README
为 Silex 2.0+ 微型框架提供轻量级配置服务。
本项目是
silex-tools
库的一部分。
安装
您可以使用 Composer 安装 silex-config
composer require lokhman/silex-config
文档
简单轻量级的配置提供程序,使用 JSON 文件来管理应用程序配置。库支持通过设置全局环境变量来管理不同环境。
use Lokhman\Silex\Provider\ConfigServiceProvider;
$app->register(new ConfigServiceProvider(), [
'config.dir' => __DIR__ . '/../app/config',
]);
文件结构
首先,在您的应用程序目录中创建一个 config
文件夹,并为预期的每个环境(默认为 local
)添加配置 JSON 文件。
/
app/
config/
dev.json
local.json
prod.json
staging.json
logs/
src/
tests/
vendor/
web/
index.php
composer.json
...
配置文件
接下来,将所有默认配置添加到配置文件中,例如。
{
"env": "%__ENV__%",
"debug": true,
"dbs.options": {
"default": {
"driver": "pdo_mysql",
"host": "localhost",
"dbname": "database",
"user": "root",
"password": "",
"charset": "utf8"
}
},
"any": {
"other": "constant"
}
}
注册
现在在您的 Silex 应用程序中注册服务提供商
use Lokhman\Silex\Provider as ToolsProviders;
$app->register(new ToolsProviders\ConfigServiceProvider(), [
'config.dir' => __DIR__ . '/../app/config',
]);
config.dir
参数指向包含 JSON 文件的配置文件夹路径。
全局环境变量
最后,您可以设置您的 Web 服务器以支持不同的部署环境。为此,您必须设置一个全局环境变量。
nginx + PHP-FPM
fastcgi_param SILEX_ENV prod
Apache
SetEnv SILEX_ENV prod
CLI
$ SILEX_ENV=prod bash -c "php bin/console migrations:status"
如果您与 ConfigServiceProvider
一起使用 控制台应用程序,您可以将 --env
(简写为 -e
)选项传递给所有已注册的命令。
$ php bin/console migrations:status --env=prod
参数
ConfigServiceProvider
支持以下参数
默认情况下,服务提供商嵌入令牌 __DIR__
和 __ENV__
,以及所有 PHP 环境变量(例如 REMOTE_ADDR
、SERVER_NAME
等)。
动态令牌
您可以使用 $params
属性在 JSON 文件中动态定义令牌。
local.json
{
"$params": {
"SECRET": "3ecd45ff71c87269569e682f2f6b2ec4"
},
"settings": {
"prop1": "%SECRET%",
"prop2": "%secret%",
"prop3": "%SeCrEt%"
}
}
注意:所有令牌均不区分大小写。
扩展
您可以使用根属性 $extends
简单地扩展 JSON 配置(将一个 JSON 文件包含到另一个文件中),该属性指向要扩展的文件(可以省略文件扩展名)。例如。
local.json
{
"env": "%__ENV__%",
"debug": true,
"locale": "en"
}
prod.json
{
"$extends": "local",
"debug": false
}
许可证
库在 MIT 许可证下可用。包含的 LICENSE 文件详细说明了此内容。