<?php
interface Observer {
public function putText($text);
}
interface Observable {
public function addObserver(Observer $o);
public function notifyObservers();
}
class PutTextOB implements Observable {
private $_text;
private $_observers = array();
public function __construct($t){
$this->_text = $t;
}
public function addObserver(Observer $o){
$this->_observers[] = $o;
}
public function notifyObservers(){
foreach ($this->_observers as $instance) {
$instance->putText($this->_text);
}
}
public function setText(){
file_put_contents("one.txt", $this->_text."\n", FILE_APPEND);
}
}
// observeables objects
class onePutText implements Observer {
public function putText($text){
file_put_contents("changedOne.txt", $text."\n", FILE_APPEND);
}
}
class twoPutText implements Observer {
public function putText($text){
file_put_contents("changedTwo.txt", $text."\n", FILE_APPEND);
}
}
$set = new PutTextOB("lol");
$set->setText();
$set->addObserver(new onePutText());
$set->addObserver(new twoPutText());
$set->notifyObservers();