m6w6/hikke

This package is abandoned and no longer maintained. No replacement package was suggested.

Prioritized Events and Observers

v1.0.0 2014-08-19 07:52 UTC

This package is auto-updated.

Last update: 2020-02-10 15:45:54 UTC


README

Prioritized event observers. Build Status

Example:

<?php

use hikke\Event;

class Observer implements \SplObserver {
	private $name;
	function __construct($name) {
		$this->name = $name;
	}
	function update(\SplSubject $e) {
		echo "Observer '{$this->name}' notified by '$e' ({$e->getPriority()})\n";
	}
	function proxiedMethodCall($arg) {
		$this->name .= $arg;
	}
}

$event = new Event("my_event");
$event->attach(new Observer("o1"), 1);
$event->attach(new Observer("o2"), 2);
$event->notify();

?>

Output:

Observer 'o1' notified by 'my_event' (0)
Observer 'o2' notified by 'my_event' (0)

Another example:

<?php

$proxy = new Event\Proxy;
$proxy->ev1 = 0;
$proxy->ev2 = 1;
$proxy->attach(new Observer("o1"), null, 1);
$proxy->attach(new Observer("o2"), null, 0);
$proxy->attach(new Observer("o3"), "ev2");
$proxy->ev3->attach(new Observer("o2"));

$proxy->proxiedMethodCall("-proxy");
$proxy->notify();
?>

Output:

Observer 'o2-proxy' notified by 'default' (0.001)
Observer 'o1-proxy' notified by 'default' (0.001)
Observer 'o2-proxy' notified by 'ev1' (0.002)
Observer 'o1-proxy' notified by 'ev1' (0.002)
Observer 'o2-proxy' notified by 'ev3' (0.004)
Observer 'o2-proxy' notified by 'ev2' (1.003)
Observer 'o3-proxy' notified by 'ev2' (1.003)
Observer 'o1-proxy' notified by 'ev2' (1.003)