2013-03-01 21 views
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" 

我無法弄清楚如何將數據成功傳遞到模式,即我想傳遞數據庫對象,但它最終會像這樣。調解器模式傳遞數據php

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

它打印出 「測試」,而不是123

+0

看起來你正在做一個事件系統通過中介者模式幹。但聽衆在哪裏? – XuDing 2014-03-17 02:28:10

回答

0

所有你需要的是取代:

$callback($eventName, $data); 

隨着

$callback($data); 

See Live Demo