Задать вопрос

Почему не срабатывает шаблон Observer php?

Привожу код

<?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 то всё пишется, но в случае паттерна, должна добавиться запись, которая увы, никак не добавляется во остальные два текстовых файла.
  • Вопрос задан
  • 2333 просмотра
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
KorsaR-ZN
@KorsaR-ZN
А где вы прикрепляете слушателей?
Как он будет работать, если его события никто не слушает!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽