Il y a environ un million de "frameworks PHP". Et la plupart d'entre eux se présentent comme suivant le modèle MVC. Bien qu'il soit bienvenu de surmonter le style de codage osCommerce (logique de traitement fortement mélangée avec SQL et HTML), il existe certainement des approches plus simples et plus faciles à suivre pour obtenir une conception d'application maintenable.
Le concept MVC d'origine était destiné aux applications GUI. Et pour Gtk / Python, il semble possible de le suivre en conséquence. Mais les applications Web PHP ne fonctionnent pas sur les vues en direct (éléments GUI) et sur un runtime Controller persistant. C'est très certainement un terme impropre s'il décrit simplement le regroupement de code + répertoire utilisé ou le nommage de classe.
"MVC" semble être utilisé comme un mot à la mode pour les frameworks PHP. Et j'ai en fait vu un ou deux frameworks PHP matures l'admettre, mais redéfinissant quand même l'expression pour correspondre à interna.
Est-ce donc généralement de l'huile de serpent? Pourquoi une meilleure terminologie n'est-elle pas utilisée et un concept plus sensé pour la propagation de PHP maintenable?
Quelques raisonnements élaboratifs
Pourquoi je soupçonne que les implémentations PHP ne suivent pas le vrai modèle MVC:
Modèles : en théorie, les modèles doivent être volumineux et contenir une logique métier, et les contrôleurs doivent être des gestionnaires légers (entrée-> sortie). En réalité, les frameworks PHP préconisent des modèles superficiels . CI et Symfony par exemple égalent Model == ORM. Même l'entrée HTTP est gérée par le contrôleur, n'est pas traitée comme un modèle.
Vues : solutions de contournement avec AJAX à prix réduit, il ne peut pas y avoir de vues sur les pages Web. Les frameworks PHP pompent toujours des pages. L'interface suit toujours efficacement le modèle HTTP ordinaire, il n'y a aucun avantage sur les applications non MVC. (Et enfin, aucun des frameworks php répandus ne peut en fait sortir vers des vues GUI au lieu de HTML. J'ai vu une bibliothèque PHP qui peut utiliser Gtk / Console / Web, mais pas les frameworks.)
Contrôleur : je ne suis pas sûr. Les contrôleurs n'ont probablement pas besoin d'être de longue durée et constamment actifs dans le modèle MVC. Dans le contexte du framework PHP, ce sont cependant principalement des gestionnaires de requêtes. Pas vraiment quelque chose à discuter, mais cela semble juste un peu à la mode.
Y aurait-il de meilleurs descripteurs? J'ai vu des acronymes comme PMVC ou HMVC lancés. Bien que les descriptions deviennent plus ambiguës, peut-être que celles-ci décriraient les cadres Web actuels moins hokey?