/** * Call the bindings on the listener for a given event. * * @param \JasonLewis\ResourceWatcher\Listener $listener * @param \JasonLewis\ResourceWatcher\Event $event * @return void */ protected function callListenerBindings(Listener $listener, Event $event) { $binding = $listener->determineEventBinding($event); if ($listener->hasBinding($binding)) { foreach ($listener->getBindings($binding) as $callback) { $resource = $event->getResource(); call_user_func($callback, $resource, $resource->getPath()); } } // If a listener has a binding for anything we'll also spin through // them and call each of them. if ($listener->hasBinding('*')) { foreach ($listener->getBindings('*') as $callback) { $resource = $event->getResource(); call_user_func($callback, $event, $resource, $resource->getPath()); } } }
public function testCanRegisterBindings() { $listener = new Listener(); $listener->onCreate(function () { }); $listener->onModify(function () { }); $listener->onDelete(function () { }); $listener->onAnything(function () { }); $this->assertArrayHasKey('modify', $listener->getBindings()); $this->assertArrayHasKey('create', $listener->getBindings()); $this->assertArrayHasKey('delete', $listener->getBindings()); $this->assertArrayHasKey('*', $listener->getBindings()); $this->assertTrue($listener->hasBinding('modify')); $this->assertTrue($listener->hasBinding('create')); $this->assertTrue($listener->hasBinding('delete')); $this->assertTrue($listener->hasBinding('*')); $listener = new Listener(); $listener->create(function () { }); $listener->modify(function () { }); $listener->delete(function () { }); $listener->anything(function () { }); $this->assertArrayHasKey('modify', $listener->getBindings()); $this->assertArrayHasKey('create', $listener->getBindings()); $this->assertArrayHasKey('delete', $listener->getBindings()); $this->assertArrayHasKey('*', $listener->getBindings()); $this->assertTrue($listener->hasBinding('modify')); $this->assertTrue($listener->hasBinding('create')); $this->assertTrue($listener->hasBinding('delete')); $this->assertTrue($listener->hasBinding('*')); }