2010-02-13 12 views
6

Ho letto alcune domande poste in precedenza e non ne ho mai visto uno che risponda alla mia domanda in "bianco e nero" per me! Quindi, mi scuso se questo è ripetitivo. La domanda è probabilmente simile a chiedere "quanto è lungo un pezzo di corda", ma portami con me!Quanto grana grossa dovrebbe essere il modello in un framework MVC?

Per un sistema di registrazione, ho un modello di utente con funzioni quali:

  • add_user
  • DELETE_USER
  • activate_user

Le suddette offerte modello utente con una tabella. La tabella degli utenti nel database MySQL.

È possibile indovinare cosa fa ciascuna funzione, ma è abbastanza approssimativa? Voglio dire dovrebbe mio modello contenere metodi che sono molto più ampia come ad esempio:

  • add_record
  • delete_record
  • update_record

Dove mi passa nella tabella e un identificativo univoco del record da eliminare , aggiungere o aggiornare?

Sto utilizzando il codeigniter, ma sono interessato a come le cose dovrebbero essere fatte in un framework MVC puro.

Mi scuso se questa domanda è troppo pignola.

Grazie a tutti

risposta

10

io non sono sicuro di cosa si intende per "grossolano".

"dovrebbe contenere il mio modello metodi che sono molto più ampia come ad esempio: add_record, delete_record, update_record"

non

Assolutamente. Mai. Ciò sconfigge lo scopo di avere un modello.

Quel genere di cose "generiche" è ciò che un database è per. Il punto di un modello è di adattare il database generale al tuo problema specifico.

Il modello deve essere specifico per il tuo problema.

"modello utente con funzioni come: add_user, delete_user, activate_user" Questo è il punto. Il tuo modello riflette la tua applicazione, il tuo dominio problematico, la tua soluzione.

Il modello dovrebbe essere in grado di - in effetti - stand alone. Dovresti essere in grado di avvolgere il tuo modello in un'app da riga di comando o in un'applicazione GUI o in una pagina web.

+2

+1 Un sacco di gente sembra pensare che tutto quello che un modello dovrebbe fare è CRUD. Ciò significa che il controller deve essere coinvolto nella logica di business della tua app. Si chiama modello perché modella il tuo problema: qualsiasi azione tua nel tuo dominio problematico ha bisogno di un metodo sul modello – meouw

+0

@ Meouw, grazie per averlo detto. Mi sembra di pensare che un modello sia un livello di astrazione del database, ma dai tuoi commenti sembra che ci sia anche la logica del business! Ho frainteso la modella. È strano, perché uso il controller per fare convalida dei moduli dovrei farlo lì? Le convalide – Abs

+2

devono essere incluse nel modello e riportare al controller se si verifica un errore. – DGM

0

È possibile indovinare cosa fa ciascuna funzione ma è abbastanza approssimativa.Voglio dire dovrebbe contenere il mio modello metodi che sono molto più ampi come ad esempio:

* add_record 
* delete_record 
* update_record 

Dove mi passa nella tabella e un unico identificativo del record da eliminare, aggiungere o aggiornare?

Se avete la necessità di ottenere solo le informazioni di un utente non necessariamente utilizzare un intero record, allora è giusto per voi di avere *_user funzioni, ma includere solo nel modello utente.

Se si ha la necessità di ottenere un intero record anziché solo l'utente, allora è anche giusto per voi avere le funzioni *_record, ma inserirle nel modello del record - NON nel modello utente.

La cosa da ricordare qui è di non includere tutte queste funzioni in un solo modello. In poche parole, il tuo utente è uguale a un record.

Problemi correlati