<?php
use Symfony\Component\Config\Definition\Processor;
use Symfony\Component\Config\Definition\ConfigurationInterface;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder('my_config');
$rootNode = $treeBuilder->getRootNode();
$rootNode->children()
->integerNode('number')
->min(3)
->max(9)
->end()
->booleanNode('boolean')
->defaultValue(true)
->end()
->scalarNode('string')
->end();
return $treeBuilder;
}
}
$configuration = new Configuration();
$processor = new Processor();
// config is valid and processed
$config = ['my_config' => [
'number' => 5,
'string' => 'value',
]];
$config = $processor
->processConfiguration($configuration, $config);
dump($config);
echo PHP_EOL;
// config "number" is not between 3 and 9
$config = ['my_config' => [
'number' => 1,
'boolean' => false,
'string' => 'value',
]];
try {
$config = $processor
->processConfiguration($configuration, $config);
}
catch (Exception $e) {
echo $e->getMessage() . PHP_EOL . PHP_EOL;
}
// config "boolean" is not true or false
$config = ['my_config' => [
'number' => 6,
'boolean' => 'ttt',
'string' => 'value',
]];
try {
$config = $processor
->processConfiguration($configuration, $config);
}
catch (Exception $e) {
echo $e->getMessage() . PHP_EOL . PHP_EOL;
}
^ array:3 [
"number" => 5
"string" => "value"
"boolean" => true
]