На мой взгляд, реализация "чистого" MVC - такая же утопия, как и тру-ООП.
Из серии сферического коня в вакууме. То есть к ним можно бесконечно стремиться, но после определенного момента на поддержание "чистоты" уходит значительно больше усилий и времени, чем на саму разработку.
Придерживаться основных принципов необходимо, но всегда есть конкретная задача, допускающая, а то и требующая (!!!) отклонений от стандартов и рамок.
Можно вспомнить одноименный фреймворк pureMVC, идеально подходящий для небольших проектов, требующий модифицирования и переделки под себя на проектах средней сложности, и становящийся жутко неудобным и негибким на здоровых проектах.
Кроме того, бывает ситуация (очень частая), когда трудно добиться четкого разделения контроллера и отображения, наоборот, удобнее и логичнее частично интегрировать их друг в друга. Так же, как код, написанный согласно принципам ООП, разбавить вкраплениями функционального программирования.
Че-то я растекся мыслью по древу, но суть в том, что нет идеальных универсальных решений, руководствоваться надо целесообразностью, исходя из конкретики задачи.
Иногда гайку быстрее и проще завернуть плоскогубцами, чем бежать в магазин за ключом соответствующего размера
