Example #1
0
{
    protected $observers = [];
    public function observe($observer)
    {
        $this->observers[] = $observer;
    }
    public function cancelObservation($observer)
    {
        $i = array_search($observer, $this->observers);
        if ($i !== false) {
            unset($this->observers[$i]);
        }
    }
    public function notify()
    {
        foreach ($this->observers as $observer) {
            $observer->update($this);
        }
    }
}
class Observer
{
    public function update($project)
    {
        echo "I heard that this project was updated: \n" . print_r($project, true);
    }
}
$project = new Project();
$project->observe(new Observer());
$project->observe(new Observer());
$project->notify();