Sto costruendo un pannello di moderazione da zero in un approccio MVC e molte domande sono spuntate durante lo sviluppo. Mi piacerebbe sentire dagli altri come gestiscono queste situazioni.
-
Gestione degli errori
Dovresti gestire un errore nel metodo della classe o il metodo restituire comunque qualcosa e tu gestisci l'errore nel controller? Che dire delle eccezioni PDO, come gestirle? Ad esempio, supponiamo di avere un metodo che restituisce true se l'utente esiste in una tabella e false se non esiste. Cosa restituisci nella dichiarazione di cattura? Non puoi semplicemente restituire falso perché il controller assume che tutto va bene mentre la verità è che qualcosa deve essere seriamente rotto. La visualizzazione dell'errore dal metodo interrompe completamente l'intero progetto. Forse un reindirizzamento della pagina all'interno del metodo?
-
Il modo corretto di mostrare una vista
Il controller adesso assomiglia a qualcosa del tipo:
include('view/header.php'); if ($_GET['m']=='something') include('view/something.php'); elseif ($_GET['m']=='somethingelse') include('view/somethingelse.php'); include('view/foter.php');
Ogni vista controlla anche se è stata inclusa dalla pagina dell'indice per impedirne l'accesso diretto. C'è un file di visualizzazione per ogni diverso corpo del documento. È questo modo di includere viste diverse ok o esiste un modo più corretto?
-
Gestione dei diritti utente
Ogni utente ha i suoi diritti, quello che può vedere e quello che può fare. Quale parte del sistema dovrebbe verificare che l'utente abbia il permesso di vedere la vista, il controller o la vista stessa? In questo momento eseguo controlli delle autorizzazioni direttamente nella vista perché ogni vista può contenere diversi moduli che richiedono autorizzazioni diverse e avrei bisogno di creare un file separato per ognuno di essi se fosse stato inserito nel controller. Devo anche ricontrollare le autorizzazioni ogni volta che un modulo viene inviato perché i dati del modulo possono essere facilmente falsificati. La verità è che tutto questo controllo dei permessi e la convalida degli input trasforma il controller in un enorme cluster if / then / else.
Mi sento come il 90% delle volte che eseguo controlli degli errori / permessi / convalide e molto poco della logica effettiva. È normale anche per i framework più diffusi?