note 107688 added to class.splsubject
| From: | przemyslawdotszpileratgmaildotcom | Date: | Sun, 26 Feb 2012 21:54:36 +0000 |
| Subject: | note 107688 added to class.splsubject | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-186371@lists.php.net to get a copy of this message | ||
<?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
*/
?>
----
Server IP: 69.147.83.197
Probable Submitter: 213.238.104.93
----
Manual Page -- http://www.php.net/manual/en/class.splsubject.php
Edit -- https://master.php.net/note/edit/107688
Del: integrated -- https://master.php.net/note/delete/107688/integrated
Del: useless -- https://master.php.net/note/delete/107688/useless
Del: bad code -- https://master.php.net/note/delete/107688/bad+code
Del: spam -- https://master.php.net/note/delete/107688/spam
Del: non-english -- https://master.php.net/note/delete/107688/non-english
Del: in docs -- https://master.php.net/note/delete/107688/in+docs
Del: other reasons-- https://master.php.net/note/delete/107688
Reject -- https://master.php.net/note/reject/107688
Search -- https://master.php.net/manage/user-notes.php