public function attach($name, $callback, $priority = 0)
    {
        $this->events->insert(array($name, $callback), $priority);
    }
    public function trigger($name, $params = array(), $callback = null)
    {
        foreach ($this->events as $event) {
            if ($event[0] = $name) {
                $e = new Event($name, $params);
                if ($r = $event[1]($e)) {
                    if (is_callable($callback)) {
                        $callback($r);
                    }
                }
            }
        }
    }
}
$events = new EventManager();
$events->attach('do', function ($e) {
    echo "Registered first\n";
    return "Hello SALAM";
}, 102);
$events->attach('do', function ($e) {
    echo "Registered second\n";
    return time();
}, 101);
$return = $events->trigger('do', array('a', 'b', 'c'), function ($r) {
    echo "<h1>{$r}</h1>\n";
});
echo "<h1>{$return}</h1>";
Exemple #2
0
}
class EventManager
{
    private $events = array();
    public function attach($name, $callback)
    {
        $this->events[$name][] = $callback;
    }
    public function trigger($name, $params = array())
    {
        foreach ($this->events[$name] as $event => $callback) {
            $e = new Event($name, $params);
            $callback($e);
        }
    }
}
$events = new EventManager();
$events->attach('do', function ($e) {
    echo $e->getName() . "\n";
    print_r($e->getParams());
});
$hello = ['a' => 'qwerty', 'b' => time()];
$events->attach('do', function ($e) use($hello) {
    echo "<br/> Second Chance";
    echo $e->getName() . "\n";
    print_r($e->getParams());
    print_r($hello);
    return array(time());
});
echo "<hr/>";
echo $events->trigger('do', array('a', 'b', 'c'));