<?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
*/
?>
L'interface SplSubject
(PHP 5 >= 5.1.0)
Introduction
L'interface SplSubject est utilisée conjointement avec la classe SplObserver pour l'implémentation du patron de conception Observateur.
Sommaire de l'Interface
SplSubject
{
/* Méthodes */
}Sommaire
- SplSubject::attach — Attache un SplObserver
- SplSubject::detach — Détache un observateur
- SplSubject::notify — Notifie un observateur
przemyslaw dot szpiler at gmail dot com
26-Feb-2012 09:54
