for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Gendoria\CommandQueueBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
/**
* This is the class that validates and merges configuration from your app/config files.
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}
*/
class Configuration implements ConfigurationInterface
{
* Configuration alias.
* @var string
private $alias;
* Class constructor.
* @param string $alias Root configuration key.
public function __construct($alias)
$this->alias = $alias;
}
* Get configuration tree builder instance.
* @return TreeBuilder Tree builder instance.
public function getConfigTreeBuilder()
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root($this->alias);
$rootNode
->validate()
->ifTrue(function($v) {
return !empty($v['enabled']) && empty($v['pools']);
})
->thenInvalid('The child node "pools" at path "'.$this->alias.'" must be configured.')
->end()
->children()
->scalarNode('enabled')
->defaultTrue()
->arrayNode('listeners')
->addDefaultsIfNotSet()
->booleanNode('clear_entity_managers')->defaultTrue()->end()
->booleanNode('clear_logs')->defaultTrue()->end()
->arrayNode('pools')
->requiresAtLeastOneElement()
->ifTrue(function (array $value) {
return !array_key_exists('default', $value);
->thenInvalid('Default service not present')
->prototype('array')
->scalarNode('send_driver')
->isRequired()
->ifTrue(function ($value) {
return !preg_match('/^@[a-zA-Z\.\-0-9\_]+$/', $value);
->thenInvalid('Malformed service ID "%s"')
->arrayNode('routes')
->normalizeKeys(false)
->prototype('scalar')
;
return $treeBuilder;