lucid/signal

Event Dispatcher Library

v0.0.1 2016-04-12 19:51 UTC

This package is not auto-updated.

Last update: 2024-11-09 19:34:33 UTC


README

Author Source Code Software License

Build Status Code Coverage HHVM

Requirements

php >= 5.6

Installation

$ composer require lucid/signal

Usage

<?php

use Lucid\Signal\EventInterface;
use Lucid\Signal\EventDispatcher;

$dispatcher = new EventDispatcher;

$dispatcher->addHandler('my_event', function (EventInterface $event) {
	// do something
});

Event Handlers

Eventhandlers can be any callable but must accept an instance of EventInterface as their first argument.

Using handlers the implement the HandlerInterface will automatically call the handleEvent method on the handler if the event is dispatched.

<?php

use Lucid\Signal\EventInterface;
use Lucid\Signal\HandlerInterface;
use Lucid\Signal\EventDispatcher;

class MyHandler implements HandlerInterface
{
	public function handleEvent(EventInterface $event)
	{
		// do something
	}
}
<?php

$dispatcher = new EventDispatcher;
$handler = new MyHandler;

$dispatcher->addHandler('my_event', $handler);

MyHandler::handleEvent will now be called when my_event is fired.

Event Delegation

Events are fired subsequentially unless all handlers where adressed or until the Event object is being stopped. You can stop the eventdelegation in your handler by calling $event->stop().

Custom Events

Event objects can be referred to message objects. You can easily create your custom message objects by implementing the EventInterface interface or extending the Event base class.

<?php

namespace Acme\Message;

use Lucid\Signal\Event;

class SysMessage extends Event
{
	private $message;

	public function setMessage($message)
	{
		$this->message = $message;
	}

	public function getMessage()
	{
		return $this->message;
	}
}