worksolutions/yii-ws-event-dispatcher

dev-master 2014-06-05 08:10 UTC

This package is not auto-updated.

Last update: 2024-11-19 07:55:11 UTC


README

Travis CI Coverage Status

EventDispatcher component a simple and effective make your projects truly extensible.

Installation

Add a dependency to your project's composer.json:

{
    "require": {
        "worksolutions/yii-ws-event-dispatcher": "dev-master"
    }
}

Usage examples

Event call

$dispatcher = Yii::app()->eventDispatcher;

/** @var SomeEvent $event */
$event = $dispatcher->createEvent(SomeEvent::className(), $eventTestParams);
$dispatcher->fire($event);

Config EventDispatcher component

'components' => array(
    'eventDispatcher' => array(
        'class' => \WS\EventDispatcher\EventDispatcher::className(),
        'events' => array(
            SomeEvent::className() => array(
                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
        );
    }
}