note 112587 added to class.splobserver
| From: | aiddroid at example dot com | Date: | Tue, 02 Jul 2013 07:41:05 +0000 |
| Subject: | note 112587 added to class.splobserver | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-195430@lists.php.net to get a copy of this message | ||
<?php
/**
* Subject,that who makes news
*/
class Newspaper implements \SplSubject{
private $name;
private $observers = array();
private $content;
public function __construct($name) {
$this->name = $name;
}
//add observer
public function attach(\SplObserver $observer) {
$this->observers[] = $observer;
}
//remove observer
public function detach(\SplObserver $observer) {
$key = array_search($observer,$this->observers, true);
if($key){
unset($this->observers[$key]);
}
}
//set breakouts news
public function breakOutNews($content) {
$this->content = $content;
$this->notify();
}
public function getContent() {
return $this->content." ({$this->name})";
}
//notify observers(or some of them)
public function notify() {
foreach ($this->observers as $value) {
$value->update($this);
}
}
}
/**
* Observer,that who recieves news
*/
class Reader implements SplObserver{
private $name;
public function __construct($name) {
$this->name = $name;
}
public function update(\SplSubject $subject) {
echo $this->name.' is reading breakout news
<b>'.$subject->getContent().'</b><br>';
}
}
$newspaper = new Newspaper('Newyork Times');
$allen = new Reader('Allen');
$jim = new Reader('Jim');
$linda = new Reader('Linda');
//add reader
$newspaper->attach($allen);
$newspaper->attach($jim);
$newspaper->attach($linda);
//remove reader
$newspaper->detach($linda);
//set break outs
$newspaper->breakOutNews('USA break down!');
//=====output======
//Allen is reading breakout news USA break down! (Newyork Times)
//Jim is reading breakout news USA break down! (Newyork Times)
----
Server IP: 69.147.83.199
Probable Submitter: 183.62.26.222
----
Manual Page -- http://php.net/manual/en/class.splobserver.php
Edit -- https://master.php.net/note/edit/112587
Del: integrated -- https://master.php.net/note/delete/112587/integrated
Del: useless -- https://master.php.net/note/delete/112587/useless
Del: bad code -- https://master.php.net/note/delete/112587/bad+code
Del: spam -- https://master.php.net/note/delete/112587/spam
Del: non-english -- https://master.php.net/note/delete/112587/non-english
Del: in docs -- https://master.php.net/note/delete/112587/in+docs
Del: other reasons-- https://master.php.net/note/delete/112587
Reject -- https://master.php.net/note/reject/112587
Search -- https://master.php.net/manage/user-notes.php