Yii-Ws-Event-Dispatcher

[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);