Hay alrededor de un millón de "marcos PHP". Y la mayoría de ellos se consideran a sí mismos siguiendo el patrón MVC. Si bien es bienvenido superar el estilo de codificación de osCommerce (lógica de procesamiento fuertemente entremezclada con SQL y HTML), ciertamente existen enfoques más simples y fáciles de seguir para obtener un diseño de aplicación que se pueda mantener.
El concepto MVC original estaba dirigido a aplicaciones GUI. Y para Gtk / Python parece factible seguirlo en consecuencia. Pero las aplicaciones web PHP no funcionan con vistas en vivo (elementos GUI) y un tiempo de ejecución del controlador persistente. Ciertamente es un nombre inapropiado si solo describe el grupo de código + directorio utilizado o el nombre de clase.
"MVC" parece ser usado como una palabra de moda para frameworks PHP. Y en realidad he visto que uno o dos frameworks PHP maduros lo admiten, pero redefiniendo la frase de todos modos para que coincida con interna.
Entonces, ¿es generalmente aceite de serpiente? ¿Por qué no se utiliza una mejor terminología y se propaga un concepto más sensible para mantener PHP?
Algún razonamiento elaborativo
Por qué sospecho que las implementaciones de PHP no siguen el patrón MVC real:
Modelos : en teoría, los modelos deben ser gruesos y contener lógica empresarial, y los controladores deben ser manejadores delgados (entrada-> salida). En realidad, los marcos de PHP abogan por modelos superficiales . CI y Symfony, por ejemplo, equivalen a Modelo == ORM. Incluso la entrada HTTP es manejada por el controlador, no se trata como modelo.
Vistas : soluciones alternativas con AJAX con descuento, no puede haber Vistas en las páginas web. Los marcos PHP aún bombean páginas. La interfaz sigue efectivamente el modelo HTTP ordinario, no hay ventaja sobre las aplicaciones que no son MVC. (Y, por último, ninguno de los frameworks php generalizados puede salir a las Vistas GUI en lugar de HTML. He visto una biblioteca PHP que puede operar Gtk / Console / Web, pero los frameworks no).
Controlador : no estoy seguro. Los controladores probablemente no necesiten ser de larga duración y persistentemente activos en el modelo MVC. Sin embargo, en el contexto del marco PHP, en su mayoría son manejadores de solicitudes. No es realmente algo sobre lo que debatir, pero se siente un poco de moda.
¿Habría mejores descriptores? He visto acrónimos como PMVC o HMVC. Aunque las descripciones se vuelven más ambiguas allí, ¿tal vez estas describirían los marcos web actuales menos tontos?