atphp / event
Wrapper for Symfony EventDispatcher component to provide more functionality.
Installs: 197
Dependents: 4
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/atphp/event
Requires
- php: >=5.3.8
- symfony/event-dispatcher: ~2.5.0
Requires (Dev)
- symfony/event-dispatcher: ~2.5.0
README
Wrapper for Symfony Event Dispatcher to provide more functionality.
<?php use Symfony\Component\EventDispatcher\Event; use AndTruong\Common\EventAware; class MyClass extends EventAware { public function myEventAwareMethod() { $this->dispatch('my.event.before'); $event = new Event(); $this->dispatch('my.event.after', $event); // or simpler $this->trigger('my.other.event', $this, ['param 1', 'param 2']); } } // Class usage $myobj = new MyClass(); $myobj->getDispatcher()->addListener('my.event.before', function(\AndyTruong\Common\Event $e) { $e->getTarget(); // instance of MyClass $e->getParams(); // ['param 1', 'param 2'] }); $myobj->myEventAwareMethod();
Result collecting
In real projects, we often collect results from external code. It can be done easily like this:
<?php $myobj = new MyClass(); $myobj->getDispatcher()->addListener('my.results.collecting.event', function(\AndyTruong\Common\Event $e) { $e->addResult("Hello there!"); }); $myobj->collectResults('my.results.collecting.event'); // ["Hello there!"] // to validate input $myobj->collectResults('my.results.collecting.event', null, null, [ function($input) { if (!is_string($input)) { throw new \Exception('Input must be string!'); } } ]); // ["Hello there!"]