Я пытаюсь создать приложение, следующее за Misko Heverys insights. Это интересный эксперимент и вызов. В настоящее время я борюсь с моей реализацией ViewHelper.ViewHelper: разрешимая/инъекционная дилемма
ViewHelper отделяет модель от вида. В моей реализации он обертывает модель и предоставляет API для представления. Я использую PHP, но я надеюсь, что реализация читаемая для всех:
class PostViewHelper {
private $postModel;
public function __construct(PostModel $postModel) {
$this->postModel = $postModel;
}
public function title() {
return $this->postModel->getTitle();
}
}
В моем шаблоне (вид) Файл это можно назвать так:
<h1><?php echo $this->post->title(); ?></h1>
До сих пор так хорошо. Проблема у меня есть, когда я хочу прикрепить фильтр к ViewHelpers. Я хочу иметь плагины, которые фильтруют вывод вызова title(). Метод стал бы так:
public function title() {
return $this->filter($this->postModel->getTitle());
}
Мне нужно, чтобы получить наблюдателей там, или EventHandler, или любой другой сервис (в том, что я вижу, как newable, поэтому он должен быть передан через стек). Как я могу это сделать в соответствии с принципами Мишко Хевери? Я знаю, как я могу это сделать без этого. Мне интересно, как я могу это сделать, и в настоящее время я не вижу решения. ViewHelper также может быть инъекционным, но тогда получить модель в этом есть проблема.
Я пробовал то же самое. Вас может заинтересует этот вопрос: http://stackoverflow.com/questions/3117800/dependency-injection-when-the-class-created-also-needs-runtime-values –