class ConcertSubject implements SplSubject{
private $obeservers;
private $value;
public function __construct()
{
$this->obeservers = new SplObjectStorage();
}
public function attach (SplObserver $observer){
$this->obeservers->attach($observer);
}
public function detach (SplObserver $observer){
$this->obeservers->detach($observer);
}
public function notify (){
foreach ($this->obeservers as $obeserver){
$obeserver->update($this);
}
}
public function setValue($value){
$this->value = $value;
$this->notify();
}
public function getValue(){
return $this->value;
}
}
class ConcertObserver implements SplObserver{
public function update (SplSubject $subject){
var_dump($subject->getValue());
}
}
$subject = new ConcertSubject();
$observer = new ConcertObserver();
$subject->attach($observer);
$subject->setValue(666);