Все познается на больших проектах,
в качестве примера возьмем методику MVC опенкарта где есть три слоя абстрации:
1) если это запрос то для этого есть модель
2) если это что-то из пхп кода то это контроллер
3) если это хтмл то это шаблон
Парни почистили от мусора код и "выкинули" в свет. Все просто красиво и самое главное бесплатно и без смс.
Но, а теперь взглянем почему же все ненавидят опенкарт. А потому что разработчиками не предусмотрены моменты как можно расширять и кастомизировать код, и все пишут свои кастомайзы там где и предусмотренно, в контроллере и когда владельцы сайта начинают баловаться модулями то оказывается схожие по функционалу модули пытаются внедрить одновременно свой код в одно и то же место одного и тогоже контроллера и начинается чихорда когда одни функции используют данные которые будут получены двумя строками ниже или два разных модуля добавили свои параметры в стандартную функцию.
многие умники догадались что можно весь треш перевести в шаблон где уже все данные получены, и контроллеры и шаблоны начинают разрастаться когда 3000-5000 строк в одном файле это норм и не такое видали, сайт начинает глючить, найти ошибку или добавить свой кастомайз становится просто невыносимым, я еще молчу про ocMod или vqMod (но это уже другая история)
итог 3 версия опенкарта использует twig темплейты, где нельзя так просто "ворваться" со своим php кодом, но и основных проблем не решила.