ConFoo Montreal 2026: Call for Papers

Voting

: min(seven, nine)?
(Example: nine)

The Note You're Voting On

przemyslaw dot szpiler at gmail dot com
13 years ago
<?php

// Example implementation of Observer design pattern:

class MyObserver1 implements SplObserver {
public function
update(SplSubject $subject) {
echo
__CLASS__ . ' - ' . $subject->getName();
}
}

class
MyObserver2 implements SplObserver {
public function
update(SplSubject $subject) {
echo
__CLASS__ . ' - ' . $subject->getName();
}
}

class
MySubject implements SplSubject {
private
$_observers;
private
$_name;

public function
__construct($name) {
$this->_observers = new SplObjectStorage();
$this->_name = $name;
}

public function
attach(SplObserver $observer) {
$this->_observers->attach($observer);
}

public function
detach(SplObserver $observer) {
$this->_observers->detach($observer);
}

public function
notify() {
foreach (
$this->_observers as $observer) {
$observer->update($this);
}
}

public function
getName() {
return
$this->_name;
}
}

$observer1 = new MyObserver1();
$observer2 = new MyObserver2();

$subject = new MySubject("test");

$subject->attach($observer1);
$subject->attach($observer2);
$subject->notify();

/*
will output:

MyObserver1 - test
MyObserver2 - test
*/

$subject->detach($observer2);
$subject->notify();

/*
will output:

MyObserver1 - test
*/

?>

<< Back to user notes page

To Top