Ci sono circa un milione di "framework PHP". E la maggior parte di loro si considera come seguendo il modello MVC. Sebbene sia gradito superare lo stile di codifica osCommerce (logica di elaborazione fortemente mescolata a SQL e HTML), esistono sicuramente approcci più semplici e facili da seguire per ottenere un design di applicazione sostenibile.
Il concetto originale MVC era mirato alle applicazioni GUI. E per Gtk / Python sembra possibile seguirlo di conseguenza. Ma le app Web PHP non funzionano su viste live (elementi della GUI) e un runtime del controller persistente. È certamente un termine improprio se descrive solo il codice usato + il raggruppamento di directory o la denominazione delle classi.
"MVC" sembra essere usato come una parola d'ordine per i framework PHP. E in realtà ho visto uno o due framework PHP maturi ammetterlo, ma ridefinendo comunque la frase in modo che corrisponda a quella interna.
Quindi è generalmente olio di serpente? Perché non viene utilizzata una terminologia migliore e viene propagato un concetto più sensato di PHP gestibile?
Alcuni ragionamenti elaborativi
Perché sospetto che le implementazioni di PHP non seguano il modello MVC reale:
Modelli : in teoria, i modelli dovrebbero essere grassi e contenere la logica aziendale, ei controller dovrebbero essere gestori sottili (input-> output). In realtà i framework PHP sostengono i modelli superficiali . CI e Symfony, ad esempio, equivalgono a Model == ORM. Anche l'input HTTP è gestito dal controller, non è trattato come modello.
Viste : soluzioni alternative con AJAX scontato, non ci possono essere viste sulle pagine web. I framework PHP continuano a pompare pagine. L'interfaccia segue ancora efficacemente il normale modello HTTP, non c'è alcun vantaggio rispetto alle applicazioni non MVC. (E, infine, nessuno dei framework php diffusi può effettivamente produrre output in GUI Views anziché HTML. Ho visto una libreria PHP che può operare Gtk / Console / Web, ma i framework no.)
Controller : non sono sicuro. Probabilmente i controller non devono essere di lunga durata e permanentemente attivi nel modello MVC. Nel contesto del framework PHP, sono comunque principalmente gestori di richieste. Non è proprio qualcosa di cui discutere, ma sembra un po 'frizzante.
Ci sarebbero descrittori migliori? Ho visto acronimi come PMVC o HMVC lanciati in giro. Sebbene le descrizioni diventino più ambigue lì, forse potrebbero descrivere gli attuali framework web meno hokey?