Ho un'app PHP e il 90% del codice riguarda la gestione di più tabelle MySQL. Ma ci sono altri sistemi come un sistema utente e un sistema di amministrazione, ecc. Tutte le richieste PHP vengono elaborate in un unico file app, quindi questo file deve inviare i comandi richiesti e inviare i parametri. La domanda è: dove inizia il routing e i parametri? Si prega di capire che non ho accesso al file httpd.conf in modo che non possa fare il routing reale. Questo è il routing simulato. Prendi questo esempio
site.com/app.php?route=table&tableName=tableA&cmd=get&id=20&sort=asc
o
site.com/app.php?route=user&cmd=login&user=bob&pw=bobby
Quindi la prima via è facile
function route($route){
switch($route){
case "table":
$this->tableRoute();
break;
case "user":
$this->userRoute();
break;
}
}
function userRoute(){
// its easy to stop routing here
switch($_REQUEST['cmd']){
case "login":
break;
case "register":
break;
}
}
function tableRoute(){
// but here tables need a subroute
// so is this where routing ends, or does routing continue?
switch($_REQUEST['tableName']){
case "tableA":
break;
}
}
Il mio dilemma di progettazione è quando ho finito il routing e quando inizio ad elaborare i "comandi"? Ad esempio, se ci sono 20 tabelle il tableRoute
è tecnicamente ancora in routing alla tabella successiva e il comando non è ancora stato elaborato. Quindi la query route
dovrebbe essere
site.com/app.php?route=tables/tableName&cmd=get&id=9.....
dove il percorso è correttamente scappato? Oppure il percorso finisce al primo percorso. Ho anche visto persone usare la seconda parte del percorso, dopo la barra, come comando, quindi forse dovrebbe essere
site.com/app.php?route=tables/tableName/get&id=9...