Ho letto diversi articoli, guardato video e letto domande qui, ma più leggo e apprendo su MVC - incluso MVCS o MVP in aggiunta .. per renderlo ancora peggio - più ampio sembra il pattern, quindi scusa se la domanda è ampia o lunga è solo perché voglio davvero capirlo e capire la sua combinazione.
Primo:
È il modello che scrive, rende o aggiorna i dati sulla vista, o è il controller, ho visto luoghi in cui lo sviluppatore usa il primo approccio, mentre il secondo è usato di più - cosa che per me è più sensato perché della coppia view-controller e dal momento che il modello è meglio separarlo, o questo è ciò che penso - ma anche con un semplice schema a blocchi , varia molto.
Secondo:
Avere questi codici logici generici per i due esempi:
Esempio 1:
// UserModel:
function getUsersDetails(id= false){
if(id){
// Fetch that specific user details with the id provided
}else{
// Fetch all users details
}
}
// UserController:
result = UserModel->getUsersDetails(id) // id is optional depending on the view
Esempio 2:
// UserModel:
function getAllUsersDetails(){
// Fetch all users details
}
function getUserDetails(id){
// Fetch that specific user details
}
//UserController:
//for ONE user details View
result = UserModel->getUserDetails(id)
//for a View of ALL users
result = UserModel->getAllUsersDetails()
Quale degli esempi sopra è l'approccio migliore, personalmente suppongo che sia l'Esempio2 a causa della regola " nessuna logica nel modello ", ma se è così, questo mi confonde ancora di più quando alcune persone dicono " No SQL nel modello, invece mettilo nei repository o in uno Store ". Se il modello non deve contenere la logica, e meglio non contenere SQL, in che cosa consisterebbe allora, solo metodi vuoti che chiamano funzioni dai repository? questo non lo renderebbe inutile e aggiungerebbe più complessità all'intero design.
Mi scuso se il post ha molte domande o è ampio e Grazie in anticipo