[size="6"]yii-ws-event-dispatcher[/size]
EventDispatcher component a simple and effective make your projects truly extensible.
[size="5"]Installation[/size]
Add a dependency to your project’s composer.json:
{
"require": {
"worksolutions/yii-ws-event-dispatcher": "dev-master"
}
}
[size="5"]Usage examples[/size]
Config EventDispatcher component
'components' => array(
'eventDispatcher' => array(
'class' => \WS\EventDispatcher\EventDispatcher::className(),
'events' => array(
SomeEvent::className() => array(
'class' => SomeHandler::className(),
'params' => array(),
),
//...
),
),
//...
)
Create handler class
use WS\EventDispatcher\Handler;
class SomeHandler extends Handler {
protected function identity() {
// check the availability of execution
return true;
}
protected function process() {
// you handler code
}
}
Create event class
use WS\EventDispatcher\Event;
class SomeEvent extends Event {
public function attributeNames() {
return array(
'fieldName',
//...
);
}
public function rules() {
return array(
//validation rules
);
}
}
Event call
$dispatcher = Yii::app()->eventDispatcher;
/** @var SomeEvent $event */
$event = $dispatcher->createEvent(SomeEvent::className(), $eventTestParams);
$dispatcher->fire($event);