Exemplo n.º 1
0
 public function __construct()
 {
     $subject = new Subject();
     $o1 = new Observer1();
     $o2 = new Observer2();
     $o3 = new Observer3();
     $subject->setData('Data for each 3 attached observers!');
     $subject->attach($o1);
     $subject->attach($o2);
     $subject->attach($o3);
     $subject->notify();
     $subject->detach($o3);
     $subject->setData('Data not for 3rd detached one!');
     $subject->notify();
 }
Exemplo n.º 2
0
{
    protected $observers = array();
    public function attach(SplObserver $observer)
    {
        $this->observers[] = $observer;
    }
    public function detach(SplObserver $observer)
    {
        $key = array_search($observer, $this->observers);
        if ($key) {
            unset($this->observers[$key]);
        }
    }
    public function notify()
    {
        foreach ($this->observers as $observer) {
            $observer->update($this);
        }
    }
}
class MyObserver implements SplObserver
{
    public function update(SplSubject $subject)
    {
        echo "I was updated by " . get_class($subject);
    }
}
$subject = new Subject();
$subject->attach(new MyObserver());
$subject->notify();
// prints "I was updated by Subject"