Ho un framework personalizzato (scritto in PHP). Funziona tutto molto bene, ma ho qualche dubbio su una certa cosa.
In questo momento, quando un utente chiama questo URL, ad esempio:
http://host.com/user/edit/12
Che verrebbe risolto in:
- user = userController
- edit = editAction () in userController
- 12 = trattato come parametro
Ma supponiamo che il controller 'userController' non esista. Quindi potrei lanciare un 404. Ma d'altra parte, l'url potrebbe anche essere usato come parametro per indexController (che è il controller predefinito). Quindi in tal caso:
- controller = indexController
- utente = potrebbe essere un'azione in indexController, altrimenti trattata come un parametro
- edit = trattato come parametro
- 12 = trattato come parametro
In realtà è così che funziona adesso nel mio framework. Quindi, in pratica, non lancio mai un 404.
Potrei naturalmente dire che solo i parametri possono essere dati se il nome del controller è esplicitamente nominato nell'URL. Quindi se voglio l'url di cui sopra:
http://host.com/user/edit/12
Per essere invocato da indexController, nell'indiceAction. Quindi devo specificatamente dire quale controller e azione utilizza nell'URL.
Quindi l'URL dovrebbe diventare:
http://host.com/index/index/user/edit/12
- index = indexController
- indice (2 °) = il metodo di azione
- utente = trattato come parametro
- edit = trattato come parametro
- 12 = trattato come parametro
In questo modo, quando un controller non esiste, non reindirizzare tutto come parametro per il controller di indice e semplicemente lanciare un errore 404.
Ora la mia domanda è, quale è più preffered? Dovrei consentire a entrambe le opzioni di essere configurabili in un file di configurazione? O dovrei sempre usare uno di loro. Semplicemente perché questo è l'unico e il modo migliore per farlo?