0
class Mediator {
    protected $events = array();
    public function attach($eventName, $callback) {
        if (!isset($this->events[$eventName])) {
            $this->events[$eventName] = array();
        }
        $this->events[$eventName][] = $callback;
    }
    public function trigger($eventName, $data = null) {
        foreach ($this->events[$eventName] as $callback) {
            $callback($eventName, $data);
        }
    }
}
$mediator = new Mediator;
$mediator->attach('stop', function() { echo "Stopping"; });
$mediator->attach('stop', function() { echo "Stopped"; });
$mediator->trigger('stop'); // prints "StoppingStopped"

パターンにデータを渡す方法がわかりません。つまり、データベース オブジェクトを渡したいのですが、このような結果になります。

$mediator->attach('test', function($test) { echo $test; });
$mediator->trigger('test', '123');

123ではなく「test」と出力されます。

4

1 に答える 1

0

必要なのは次のものを置き換えることだけです:

$callback($eventName, $data);

$callback($data);

ライブデモを見る

于 2013-03-01T14:50:57.617 に答える