You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
551 B
25 lines
551 B
<?php
|
|
|
|
namespace Model;
|
|
|
|
abstract class Observable {
|
|
private array $observers = array();
|
|
|
|
public function attachObserver(Observer $observer) {
|
|
$this->observers[] = $observer;
|
|
}
|
|
|
|
public function detachObserver(Observer $observer) {
|
|
$key = array_search($observer, $this->observers);
|
|
if ($key !== false) {
|
|
unset($this->observers[$key]);
|
|
}
|
|
}
|
|
|
|
public function notifyObservers() {
|
|
foreach ($this->observers as $observer) {
|
|
$observer->update($this);
|
|
}
|
|
}
|
|
}
|
|
?>
|