Observer Pattern¶
The Observer pattern defines a one-to-many dependency between objects: when one object changes state, all registered dependents are notified automatically.
PHP provides built-in interfaces SplSubject and SplObserver to implement this pattern natively. It is also the basis for event-driven systems, message buses, and reactive frameworks.
<?php
class EventSource implements SplSubject {
private SplObjectStorage $observers;
private string $state = '';
public function __construct() {
$this->observers = new SplObjectStorage();
}
public function attach(SplObserver $observer): void {
$this->observers->attach($observer);
}
public function detach(SplObserver $observer): void {
$this->observers->detach($observer);
}
public function notify(): void {
foreach ($this->observers as $observer) {
$observer->update($this);
}
}
public function setState(string $state): void {
$this->state = $state;
$this->notify();
}
}
?>
See also SplSubject, SplObserver and Observer pattern.
Related : Design Pattern, Observer Design Pattern, SplObserver, SplSubject