Ci sono circa un miliardo di "framework PHP". E la maggior parte di loro si fatturano come seguendo il pattern MVC. Benché sia possibile superare lo stile di codifica di osCommerce (logica di elaborazione strongmente mescolata con SQL e HTML), esistono sicuramente approcci più semplici e facili da seguire per ottenere un progetto di applicazione gestibile.
Il concetto MVC originale era mirato alle applicazioni GUI. E per Gtk / Python sembra fattibile seguirlo di conseguenza. Ma le web app PHP non funzionano su live Views (elementi della GUI) e su un persistente runtime del controller. Certamente è un termine improprio se descrive solo il codice utilizzato + il raggruppamento di directory o la denominazione della classe.
"MVC" sembra essere usato come buzzword per i framework PHP. E in effetti ho visto uno o due framework PHP maturi che lo ammettono, ma ridefinendo comunque la frase per corrispondere a interna.
Quindi è generalmente olio di serpente? Perché non viene utilizzata una terminologia migliore e un concetto più ragionevole per propagare PHP mantenibile?
Alcuni ragionamenti elaborativi
Perché sospetto che le implementazioni PHP non seguano il modello MVC reale:
Modelli : in teoria, i modelli dovrebbero essere grossi e contenere la logica aziendale e i controller dovrebbero essere thin handler (input e gt; output). In realtà i framework PHP sostengono i modelli shallow . CI e Symfony per esempio equivalgono a Model == ORM. Anche l'input HTTP viene gestito dal controller, non viene considerato come modello.
Visualizzazioni : soluzioni alternative con AJAX scontate, non possono esserci visualizzazioni su pagine web. I framework PHP continuano a pompare pagine. L'interfaccia segue ancora in modo efficace il modello HTTP ordinario, non c'è alcun vantaggio rispetto alle applicazioni non MVC. (E, infine, nessuno dei framework PHP diffusi è in realtà in grado di generare viste GUI anziché HTML. Ho visto una libreria PHP che può gestire Gtk / Console / Web, ma i framework no.)
Controller : non sono sicuro. Probabilmente non è necessario che i controller siano long-running e persistentemente attivi nel modello MVC. Nel contesto del framework PHP, sono tuttavia principalmente gestori di richieste. Non è davvero qualcosa di cui discutere, ma sembra solo un po 'buzzword.
Ci sarebbero dei migliori descrittori? Ho visto acronimi come PMVC o HMVC lanciati in giro. Anche se le descrizioni diventano più ambigue, forse queste descrivono gli attuali framework web meno hokey?