1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: namespace Autarky\Events;
12:
13: use Symfony\Component\EventDispatcher\EventDispatcher as SymfonyEventDispatcher;
14:
15: 16: 17: 18: 19: 20:
21: class EventDispatcher extends SymfonyEventDispatcher
22: {
23: 24: 25:
26: protected $resolver;
27:
28: 29: 30:
31: public function __construct(ListenerResolver $resolver)
32: {
33: $this->resolver = $resolver;
34: }
35:
36: 37: 38: 39: 40: 41:
42: public function addListener($name, $listener, $priority = 0)
43: {
44: if (is_string($listener) && !is_callable($listener)) {
45: $listener = [$listener, 'handle'];
46: }
47:
48: if (is_array($listener) && is_string($listener[0])) {
49: list($class, $method) = $listener;
50: $listener = function($event) use($class, $method) {
51: return $this->resolver->resolve($class)
52: ->$method($event);
53: };
54: }
55:
56: parent::addListener($name, $listener, $priority);
57: }
58: }
59: