Há cerca de um zilhão de "estruturas PHP". E a maioria deles se considera seguindo o padrão MVC. Embora seja bem-vindo superar o estilo de codificação do osCommerce (lógica de processamento fortemente misturada com SQL e HTML), certamente existem abordagens mais simples e fáceis de seguir para obter um design de aplicativo sustentável.
O conceito original do MVC foi direcionado para aplicativos GUI. E para o Gtk / Python, parece viável segui-lo de acordo. Mas os aplicativos Web PHP não operam em Visualizações ao vivo (elementos da GUI) e em um tempo de execução persistente do Controller. Certamente é um nome impróprio se apenas descrever o código usado + o agrupamento de diretórios ou a nomeação de classes.
"MVC" parece ser usado como um chavão para estruturas PHP. E, na verdade, eu vi um ou dois frameworks PHP maduros admitirem, mas redefinindo a frase de qualquer maneira para corresponder a interna.
Então é geralmente óleo de cobra? Por que não é usada uma terminologia melhor e um conceito mais sensato para PHP sustentável propagado?
Algum raciocínio elaborativo
Por que suspeito que as implementações de PHP não seguem o padrão MVC real:
Modelos : em teoria, os modelos devem ser gordos e conter lógica de negócios, e os controladores devem ser manipuladores finos (entrada-> saída). Na realidade, as estruturas PHP defendem modelos rasos . CI e Symfony, por exemplo, igualam Model == ORM. Até a entrada HTTP é manipulada pelo controlador, não é tratada como modelo.
Exibições : soluções alternativas com desconto para o AJAX, não pode haver Exibições nas páginas da web. Estruturas PHP ainda distribuem páginas. A interface ainda segue efetivamente o modelo HTTP comum, não há vantagem sobre aplicativos não MVC. (E, por último, nenhuma das estruturas PHP amplamente difundidas pode gerar saída para GUI Views em vez de HTML. Vi uma biblioteca PHP que pode operar Gtk / Console / Web, mas as estruturas não.)
Controlador : Não tenho certeza. Os controladores provavelmente não precisam ser de longa duração e persistentemente ativos no modelo MVC. No contexto da estrutura PHP, eles são, na maioria das vezes, manipuladores de solicitações. Não é realmente algo para se argumentar, mas parece um pouco chato.
Haveria descritores melhores? Vi acrônimos como PMVC ou HMVC lançados. Embora as descrições fiquem mais ambíguas por lá, talvez elas descrevam os atuais frameworks da web menos obscuros?