Skip to content

Instantly share code, notes, and snippets.

@boxers999
Created September 14, 2011 07:38
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save boxers999/1216045 to your computer and use it in GitHub Desktop.
Save boxers999/1216045 to your computer and use it in GitHub Desktop.
PHP SplObserver Example
<?php
class DemoSubject implements SplSubject{
private $observer, $value;
public function __construct(){
$this->observers = array();
}
public function attach(SplObserver $observer){
$this->observers[] = $observer;
}
public function detach(SplObserver $observer){
if(($idx = array_search($observer, $this->observers, true)) !== false){
unset($this->observers[$idx]);
}
}
public function notify(){
foreach($this->observers as $observer){
$observer->update($this);
}
}
public function setValue($value){
$this->value = $value;
$this->notify();
}
public function getValue(){
return $this->value;
}
}
class DemoObserver implements SplObserver {
public function update(SplSubject $subject){
echo 'This is the value :- '. $subject->getValue();
}
}
$subject = new DemoSubject();
$observer = new DemoObserver();
$subject->attach($observer);
$subject->setValue(5);
$subject->detach($observer);
$subject->setValue(10);
@nfouka
Copy link

nfouka commented Aug 31, 2020

line 5 : private $observers, $value;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment