Usage
This package supplies a zend-config-aggregator post processor that consumes the Symfony DependencyInjection ParameterBag in order to allow users to define parameters to re-use within their configuration.
As an example, one could define an API key, cache path, or other common filesystem location once as a parameter, and then refer to that parameter multiple times within the configuration, in order to simplify updates to the value.
Parameters are referenced within configuration using %name%
notation.
Parameters may be defined as nested associative arrays as well; in such cases, a
.
character references an additional layer of hierarchy to dereference:
%foo.bar%
refers to the paramter found at 'foo' => [ 'bar' => 'value' ]
.
Starting in version 1.1.0, you can use parameters which reference other parameters as well.
If you wish to use a literal %name%
within your configuration, you must
double-escape the percentage signs: %%name%%
. Failure to do so will result in
an exception when post-processing the configuration.
As a self-contained example:
use Zend\ConfigAggregator\ArrayProvider;
use Zend\ConfigAggregator\ConfigAggregator;
use Zend\ConfigAggregatorParameters\ParameterPostProcessor;
$aggregator = new ConfigAggregator(
[
new ArrayProvider([
'parameter_usage' => '%foo%',
'parameter_name' => '%%foo%%',
'recursive_parameter_usage' => '%bar.baz%',
'parameterized_parameter_usage' => '%bar.quux%',
]),
],
null,
[
new ParameterPostProcessor([
'foo' => 'bar',
'bar' => [
'baz' => 'qoo',
'quux' => '%foo%', // Since 1.1.0
],
]),
]
);
var_dump($aggregator->getMergedConfig());
The result of the above will be:
array(5) {
'parameter_usage' =>
string(3) "bar"
'parameter_name' =>
string(5) "%foo%"
'recursive_parameter_usage' =>
string(3) "qoo"
'parameterized_parameter_usage' =>
string(3) "bar"
'parameters' =>
array(4) {
'foo' =>
string(3) "bar"
'bar' =>
array(2) {
'baz' =>
string(3) "qoo"
'quux' =>
string(3) "bar"
}
'bar.baz' =>
string(3) "qoo"
'bar.quux' =>
string(3) "bar"
}
}
Found a mistake or want to contribute to the documentation? Edit this page on GitHub!