Jar*_*ell 5 environment-variables symfony
我正在尝试使用ENVs在Symfony2中设置我的参数.标量值很容易,但我有一些参数是我需要用ENV设置的数组.
有问题的参数:
parameters:
redis.servers:
- { host: 127.0.0.1, port: 6379 }
- { host: other, port: 6379 }
# and so on
Run Code Online (Sandbox Code Playgroud)
这里的踢球者是服务器阵列可以动态改变,所以我不能假设有2个.
我希望做什么(但这只是给了我一串json):
SYMFONY__REDIS__SERVERS=[{"host":"127.0.0.1","port":"6379"}]
Run Code Online (Sandbox Code Playgroud)
这可能吗?任何可行的解决方案?我们正在使用多个接受数组/对象参数的bundle,因此我无法在那里进行更新来处理param.它必须是app级别,如果有的话.
谢谢.
我能够通过更新 AppKernel 以覆盖父内核的 getEnvParameters() 方法来解决此问题。此方法仅在内核已在 ENV 中找到的参数上运行(技术上来自 $_SERVER)。我喜欢它,因为它不会在整个参数堆栈上运行,也不会在整个 $_SERVER 数组上运行。
protected function getEnvParameters()
{
$parameters = parent::getEnvParameters();
foreach ($parameters as &$parameter) {
if (is_string($parameter)) {
$decoded = json_decode($parameter, true);
// we only care about arrays (or objects that get turned into arrays)
if (!json_last_error() && is_array($decoded)) {
$parameter = $decoded;
}
}
}
return $parameters;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |