Skip to content

lucidphp/signal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Event Dispatcher Library

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;
	}
}

About

[READ ONLY] Subtree split of `Lucid\Signal`

Resources

License

Stars

Watchers

Forks

Packages

No packages published