IANAPHPD (я не PHP-разработчик), но может быть полезна перспектива разработчика общего языка программирования (Java / C #). Для меня одним из преимуществ MVC является содействие повторному использованию кода, когда у вас есть основная бизнес-логика и инфраструктура, которые должны быть представлены с несколькими пользовательскими интерфейсами. Например, система управления заказами, которая имеет веб-интерфейс, а также интерфейс рабочего стола. В этом случае этой основной логикой является Модель. Каждый из трех интерфейсов имеет свои собственные представления и контроллеры. В C # тривиально структурировать ваш код так, чтобы основная логика находилась в наборе пакетов / сборок, на которые ссылаются как из проекта пользовательского интерфейса рабочего стола, так и из проекта веб-приложения.
Я думаю, что в этих условиях, даже когда я почти уверен, что конкретному приложению не понадобится другой интерфейс. Когда я пытаюсь решить, следует ли что-то использовать в модели или контроллере, я спрашиваю себя, должна ли эта функциональность использоваться повторно из другого пользовательского интерфейса .
Это несколько неестественный способ думать о PHP-коде, поскольку PHP так тесно связан с веб-платформой (насколько я знаю). Несмотря на это, этот способ мышления остается в силе (разделение проблем и не повторяйте себя), он все еще может применяться: вторым «пользовательским интерфейсом», который может поддерживать PHP, будет API веб-службы . Если функция должна быть доступна как для веб-сайта, так и для API веб-службы, то она должна быть представлена в модели.
Вас может заинтересовать, а может и не заинтересоваться, но в целом этот способ мышления идеально интегрируется с доменно-управляемым дизайном.
Примечание. Хотя все пользовательские интерфейсы, поддерживаемые PHP, основаны на веб-технологиях, я по-прежнему с осторожностью относился к модели, связанной с веб-интерфейсом (все, что связано с сеансами браузера, файлами cookie, отслеживанием обращений и т. Д.), Главным образом с проблемы связаны с презентацией, а не с бизнес-ориентацией, и во-вторых, потому что это усложняет перенос системы по частям на другой язык / платформу по какой-либо причине позже.