Front Controller Pattern e parametri in home page.
Ho sviluppato un Front Controller Pattern in PHP che utilizzo nei miei CMS, ma ho una mancanza non poco importante.
In pratica faccio il parsing dell'url (il tutto è diviso in cartelle virtuali), ne estraggo la prima parte che sarà la base e la pagina da visualizzare, poi assegno i parametri interessati e fin qui tutto ok. Se però devo passare valori all'home page che non siano nella query string classica, il parametro mi viene ovviamente preso come base della pagina da visualizzare.
Ho pensato di usare la home nel caso le regole della base non esistano e nel caso non ci siano parametri nella home, venga restituito il 404, ma mi pare troppo dispendioso a livello di risorse e troppi giri inutili.
Un'altra soluzione è aggiungere, per esempio, "view/" prima della base, ma vorrei mantenere gli urls puliti, per esempio "/forum/", "/account/" e non "/view/forum/" e "/view/account/".
Se avete idee utili che potrebbero portarti ad una risoluzione del problema, ve ne sarei molto grato.
Io ho un approccio simile ma ho scelto la flessibilità: un url /a/b/c/ sul sito viene spezzato nelle diverse parti, e vado a cercare pagine corrispondenti:
se a/b/c esiste, chiamo quella, altrimenti
se a/b esiste, richiamo quella con parametro c, altrimenti
se a esiste, la richiamo con parametri b e c
se ho sfortuna e non esiste niente, richiamo la home con parametri a, b e c
Non è nulla di rivoluzionario, è usato da altri framework in giro. Per pagine normali, trovo subito l'elemento necessario. Per chiamate con tanti parametri magari c'è un po' di lavoro in più, ma di solito sono pagine che contattano il dabatase, quindi il tempo di calcolo dipende più da quello.
Se vuoi evitare questo genere di lavoro, puoi aggiungere il view/ ed un tot di RewriteRule a monte per ripulire specifici url, ma è una soluzione più fastidiosa forse.