* The array returned by getListeners() now removes the listener hash as the key (as this is an implementation detail)
* The sort method now guarantees that a listener registered before another will stay in the same order even for the same priority (for BC)
* Made various optimizations
* events:
[FrameworkBundle] fixed the traceable event manager
[EventDispatcher] made order deterministic (first registered one stay first) -- this makes the new system more compatible with the old one
[FrameworkBundle] fixed class loading order
fixed various bugs introduced during the event system migration
renamed filterCore* to onCore*
fixed CS
fixed phpdoc
renamed some methods in the event dispatcher
[HttpKernel] Removed unused onCoreSecurity event
[Security] Fixed method names in the Firewall listeners
[HttpKernel] Added more code documentation to the HttpKernel events
[Security] Fixed method calls on EventDispatcher
[FrameworkBundle] Removed EventSubscriber support for DI tags because it currently cannot be implemented
[Security] Fixed calls to EventDispatcher::dispatchEvent()
Switched from Doctrine's EventManager implementation to the EventManager clone in Symfony2 (now called EventDispatcher again)
[EventDispatcher] Replaced EventDispatcher by Doctrine's implementation
Renamed EventArgs classes and adapted remaining code to EventManager
Replaced EventDispatcher by Doctrine's EventManager implementation
The onCore* events are fired at some pre-defined points during the
handling of a request. At this is more important than the fact
that you can change things from the event.
The Config component API have changed and the extension configuration files must be updated accordingly:
1. Array nodes must enclosed their children definition in ->children() ... ->end() calls:
Before:
$treeBuilder->root('zend', 'array')
->arrayNode('logger')
->scalarNode('priority')->defaultValue('INFO')->end()
->booleanNode('log_errors')->defaultFalse()->end()
->end();
After:
$treeBuilder->root('zend', 'array')
->children()
->arrayNode('logger')
->children()
->scalarNode('priority')->defaultValue('INFO')->end()
->booleanNode('log_errors')->defaultFalse()->end()
->end()
->end()
->end();
2. The 'builder' method (in NodeBuilder) has been dropped in favor of an 'append' method (in ArrayNodeDefinition)
Before:
$treeBuilder->root('doctrine', 'array')
->arrayNode('dbal')
->builder($this->getDbalConnectionsNode())
->end();
After:
$treeBuilder->root('doctrine', 'array')
->children()
->arrayNode('dbal')
->append($this->getDbalConnectionsNode())
->end()
->end();
3. The root of a TreeBuilder is now an NodeDefinition (and most probably an ArrayNodeDefinition):
Before:
$root = $treeBuilder->root('doctrine', 'array');
$this->addDbalSection($root);
public function addDbalSection(NodeBuilder $node)
{
...
}
After:
$root = $treeBuilder->root('doctrine', 'array');
$this->addDbalSection($root);
public function addDbalSection(ArrayNodeDefinition $node)
{
...
}
4. The NodeBuilder API has changed (this is seldom used):
Before:
$node = new NodeBuilder('connections', 'array');
After:
The recommended way is to use a tree builder:
$treeBuilder = new TreeBuilder();
$node = $treeBuilder->root('connections', 'array');
An other way would be:
$builder = new NodeBuilder();
$node = $builder->node('connections', 'array');
Some notes:
- Tree root nodes should most always be array nodes, so this as been made the default:
$treeBuilder->root('doctrine', 'array') is equivalent to $treeBuilder->root('doctrine')
- There could be more than one ->children() ... ->end() sections. This could help with the readability:
$treeBuilder->root('doctrine')
->children()
->scalarNode('default_connection')->end()
->end()
->fixXmlConfig('type')
->children()
->arrayNode('types')
....
->end()
->end()