我创建了一个配置提供程序,用于处理yaml文件中的silex配置。
一切都好 !偶数import
功能很棒。
我唯一的问题是动态替换%%
参数包围的参数。
base_path: /my/path/to/base
paths:
web_path: %base_path%/web
upload_path: %web_path%/uploads
我真的不知道Symfony配置组件是否可以这样处理数据。
答案 0 :(得分:0)
可能这段代码会帮助你
function _flattenArray($array, &$flatten, $index = null, $path = null)
{
if (\is_array($array)) {
foreach ($array as $k => $v) {
_flattenArray(
$v,
$flatten,
(isset($index) ? $index . '.' : '') . $k,
(isset($path) ? $path : '') . '[' . $k . ']'
);
}
} else {
$flatten[$index] = [
'path' => $path,
'value' => $array,
];
}
}
$config = ...; // load config
$flatten = [];
_flattenArray($config, $flatten);
$parameterBag = [];
foreach ($flatten as $k => $v) {
$parameterBag[$k] = $v['value'];
}
$parameterBag = new \Symfony\Component\DependencyInjection\ParameterBag\ParameterBag($parameterBag);
$parameterBag->resolve();
$parameterBag = $parameterBag->all();
$propertyAccessor = \Symfony\Component\PropertyAccess\PropertyAccess::createPropertyAccessor();
foreach ($parameterBag as $k => $v) {
if ($v === $flatten[$k]['value']) continue;
$propertyAccessor->setValue($config, $flatten[$k]['path'], $v);
}
dump($config);