Sto cercando di imparare e comprendere appieno il pattern mvc e di imparare php allo stesso tempo. Ho deciso di creare un framework mvc di base che potrei utilizzare in seguito su vari progetti. Avendo letto molti post qui riguardo al mvc e all'accoppiamento tra modelli/viste/controller, mi sento un po 'perso .. Al momento la mia comprensione è che nei controller di applicazioni web si tratta di una richiesta proveniente dal browser e, se necessario, chiama i metodi su classi modello che dicono ai modelli di cambiare il suo stato. Quindi il controllore istanzia una classe di visualizzazione appropriata che sarà responsabile della visualizzazione dell'interfaccia. Ecco il bit non capisco ...Il generale su mvc ... il controller deve passare i dati per visualizzare o visualizzare dovrebbe prenderlo direttamente dal modello?
Ora dovrebbe passare controllore oggetto modello appropriato per visualizzare e vista dovrebbe tirare fuori tutti i dati dal modello in caso di necessità?
Oppure il controller deve prelevare i dati dal modello e passarli alla vista, eventualmente avvolgendoli tutti in un unico oggetto wrapper che la vista accederà e acquisirà i dati da lì?
O la vista dovrebbe semplicemente creare un'istanza del modello appropriato quando necessario e estrarre i dati direttamente dall'oggetto del modello?
Da quello che ho letto qui
http://www.phpwact.org/pattern/model_view_controller
sarei magra verso il 3 ° opzione in cui controllore non passa nulla a che vedere e visualizzare un'istanza del modello di cui ha bisogno. Questo perché:
vista e controllore dovrebbero avere pari accesso al modello
controller non dovrebbe agire semplicemente come mediatore tra vista e modello.
C'è davvero un modo corretto per farlo o dipende piuttosto dal progetto? Inoltre quale approccio consiglieresti a qualcuno che abbia una comprensione decente di OOP, ma è relativamente nuovo per PHP e non troppo chiaro per l'architettura di mvc. O forse dovrei andare con quello che sembra giusto per me e imparare dai miei errori (vorrei comunque evitare questo);)?
Ora, per favore fatemi sapere se la mia domanda non è chiara proverò a spiegare meglio quindi .. Ho letto anche molti post su StackOverflow e numerosi articoli su diversi siti, ma apprezzerebbero comunque l'aiuto quindi grazie in anticipo a tutti risposte.
Ma cosa facciamo se non ci fosse bisogno di 2 modelli? Non sono sicuro che ciò accada o potrebbe anche essere una cattiva architettura, ma sembra un caso possibile. – Sliq
Sicuro. Quando parliamo di "The View" e "The Model" in singolare, ci riferiamo solo ai vari livelli. L'implementazione effettiva potrebbe richiamare più classi/oggetti all'interno di quel livello. Ad esempio, "A View" è spesso una raccolta di più frammenti parziali che si uniscono per rendere il risultato finale. Allo stesso modo, puoi spesso utilizzare più oggetti del modello nel processo. – troelskn