Как-то Саша заметил, что ООП пораждает язык в языке и я согласен.
Я занимаюсь программированием и собственно на этом клубе с 2002 года, и собственно раза три прочитал уже ISBN 978-5-469-01136-1, но до сих пор считаю что прочитать еще раз бы не помешало.
Так вот, на тот момент, здесь создавались отличные и замечательные проекты, которые до сих пор работают, на протяжении уже многих лет, тогда, не было понятия "MVC" и тотально его знания никто не требвал, а вот единые точки входа были, и разделение логики от отображения (тот же SMARTY), и контроллеры.
> Но основные отношения в схеме MVC описываются паттернами наблюдатель, компоновщик и стратегия
Вот ключевая фраза , утверждение, суть.
Что такое наблюдатель - его реализацию на PHP можно посмотреть в сети. Ни в одном контроллере, котрый здесь (на клабе) обсуждался я еще не встречал (хотя было пара исключений), так вот.
Как это должно работать я четко представляю. Мы создаем объект - модель модуля, контроллер, и вид, который находится в default состоянии и способен уже выводить данные. Скажем, приходит запрос клиента - показать новость. В этот момент, стретегия (контроллер) выбирает нужную модель и запускает его (интерация), модель определяет нужную новости, выполняет логику и информирует (наблюдатель) объект "вид" (компоновщик) , который сам меняет свои свойства, в зависимости от изменения модели. По своей сути, это три разных объекта. В любой момент, мы можем назначить несколько видов модели, например HTML, XML, CSV, и задача модели будет информировать все три объекта вида.
Все три объекта - независимы, они живут своей жизнью, я могу сказать - виду - дай свой состояние, оно мне его отдаст, никого не спрашивая.
Что по факту мы видим в Веб'е.
Контроллер - стретегия (его реализация в PHP через include, что мы видим везде) и зачастую на него возлагают обязанности парсинга урлов, инклуда данных и часть логики (модели).
Вид - зачастую - также, стратегия, т.е. инклудим нужный TPL (PHP) и на этом все (XML или HTML и т.п.), что бы вид был объектом - я встречаю крайне редко.
Модель - та же стратегия
Т.е., в веб приложении на PHP (любой скриптовый язык) зачастую используется один и то же паттерн - стратегия.
Исключение - fcgi приложения, там реализовать MVC в исконном понятии легко, но не прижился в PHP fcgi, из-за того, что все течет и требует больших знаний и внимательности от программистов.