5

Ho chiesto un tempo fa here per un po 'di aiuto nella comprensione di MVC, dal momento che sono molto nuovo all'argomento. Pensavo di averne una comprensione decente, e questo è documentato in un blog post che ho scritto di recente sull'argomento. La mia comprensione si riduce fondamentalmente a questo:MVC: i modelli e gli oggetti entità sono concetti separati?

Controller: Determina che cosa deve essere fatto per soddisfare una richiesta e utilizza tutti i modelli necessari per la raccolta/modifica secondo necessità. È fondamentalmente un manager per un determinato processo.

Views: Presentation only. Una volta che un controller raccoglie ciò di cui ha bisogno, crea un tipo di vista specifico, passa le informazioni e dice "Mostra questo all'utente, comunque lo fai."

Modelli: Comportamento dell'applicazione. Quando il controllore chiede di estrarre o modificare qualcosa, sa come farlo. Sa anche attivare altri modelli per svolgere attività correlate (a mio avviso, quando un modello tenta di "votare per qualcosa" su StackOverflow, quel modello sa se è necessario concedere anche un badge a causa di esso. c'è bisogno di preoccuparsene).

La mia domanda, supponendo che tutto ciò sia più o meno preciso, è dove entrano gli oggetti entità? I modelli e le entità sono la stessa cosa, con ogni oggetto che sa come mantenere i propri dati o sono entità un concetto separato che esiste da solo e viene utilizzato in tutta l'applicazione?

Il mio denaro è su quest'ultimo, poiché ciò consentirebbe ai modelli di agire in modo indipendente, mentre tutti e tre i livelli (modello, vista e controller) potrebbero utilizzare le entità per trasmettere i dati in base alle necessità. Inoltre, gli oggetti e la persistenza del database sembrano preoccupazioni che dovrebbero essere separate.

Per essere onesti, più leggo su MVC più mi confuso. Sono quasi pronto a prendere il concetto di base (presentazione separata dalla logica) e gestirlo in qualsiasi modo sia giusto, senza preoccuparmi troppo dell'etichetta "MVC".

risposta

0

Ogni modello può essere un'entità che contiene alcuni metodi per controllare e utilizzare i relativi dati.
E 'sufficiente?

+0

Mi dispiace, ma non sono abbastanza sicuro di quello che stai dicendo. Potresti riformulare questo? – AgentConundrum

+0

davvero dispiaciuto coz del mio inglese ...: P –

+1

Nessun problema. Quindi stai dicendo che i modelli e le entità sono la stessa cosa? Sono un po 'sorpreso da questo, poiché (come ho detto nella mia domanda) sembra che l'entità stessa non debba preoccuparsi della propria persistenza. – AgentConundrum

5

Sì!

Il mio denaro è su questi ultimi, in quanto ciò permetterebbe modelli di agire in modo indipendente

Non si desidera associare l'immagine per un Ente, perché se la vista ha bisogno anche di qualche altro pezzo di dati, dovresti farlo alla tua Entità. Il modello supporta completamente la vista e si occupa di supportare tale visualizzazione e nient'altro.

Ad esempio, viene visualizzato un elenco delle entità, quali altri dati potrebbero essere necessari? Numero di pagina corrente? Numero totale di pagine? Un messaggio personalizzato da visualizzare?

Questo è il motivo per cui è necessario associare un modello, che è possibile aggiungere liberamente agli elementi dati come necessario.

Aggiornamento

Ecco una spiegazione di MVC in azione ...

Il controller riceve tutti i dati necessari per la richiesta e lo mette nel modello. Passa quindi il modello alla vista.

La visualizzazione riguarda quindi il layout dei dati nel modello.

+0

Stavo pensando che un controller chiamerebbe tutti i modelli necessari per ottenere ciò di cui ha bisogno e i modelli genererebbero entità da restituire al controller. Quando il controllore ha raccolto ciò di cui ha bisogno, passa la collezione di entità che il modello gli ha fornito e la vista usa queste entità per generare il suo output. per esempio il controllore chiede un modello per una domanda, chi dà al controllore un'entità domanda, chi invia l'entità alla vista, che ha qualcosa come "<? php echo $ question-> getQuestionTitle?>" cioè l'entità è la fonte delle visualizzazioni dati. È giusto? – AgentConundrum

+0

Spiegherò di nuovo quello che hai appena detto in un aggiornamento di questa risposta ... – Fenton