Привожу код
<?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(){
$this->notifyObservers();
file_put_contents("one.txt", $this->_text, FILE_APPEND);
}
}
// observables objects
class onePutText implements Observer {
public function __construct(Observable $o){
$o->addObserver($this);
}
public function putText($text){
file_put_contents("changedOne.txt", $text, FILE_APPEND);
}
}
class twoPutText implements Observer {
public function __construct(Observable $o){
$o->addObserver($this);
}
public function putText($text){
file_put_contents("changedTwo.txt", $text, FILE_APPEND);
}
}
$set = new PutTextOB("lol");
$set->setText();
$set->notifyObservers();
?>
Всё это описано в одном файле, так же файлы *.txt лежат в том же каталоге, если по отдельности вызывать эти объекты и вызывать метод putText то всё пишется, но в случае паттерна, должна добавиться запись, которая увы, никак не добавляется во остальные два текстовых файла.