Sfondo / Il problema
Ho bisogno di creare un'applicazione (grande) con un certo insieme di funzionalità core e alcune funzionalità per più client al suo interno. Ogni cliente ha diversi requisiti e mentre possono condividere alcune funzionalità, ho bisogno di separare il codice per ogni cliente, quindi una modifica a uno non influenzerà gli altri. Ogni sezione client dell'applicazione dovrebbe anche ereditare alcune funzionalità dall'applicazione principale. Idealmente mi piacerebbe separare i database per ogni cliente. In termini di un sistema utente, gli utenti core dovrebbero essere in grado di accedere alle funzionalità di ciascun client, ma gli utenti client dovrebbero essere in grado di interagire con la loro specifica sezione client del sito.
Soluzione corrente
Ogni client ha il proprio sottodominio e MVC può sovrascrivere i file MVC del core SE esistono. In poche parole, il caricatore automatico MVC personalizzato controlla la directory del client per il file M, V o C corrispondente quando un sottodominio è presente nell'URL e carica il file del client specifico INSTEAD del file principale. È un'abilità di override in un certo senso.
Domande
-
Sto risolvendo questo problema in un modo che sarebbe considerato una buona pratica in termini di progettazione del software?
-
Se dovessi utilizzare un framework PHP esistente (mi piacerebbe), come potrei andare a configurarlo per risolvere questo problema? Nello specifico ho cercato Yii e CodeIgniter.
Grazie in anticipo!
Aggiornamento: Ho scoperto un modello di progettazione chiamato HMVC (Hierarchical MVC) e sembra essere essenzialmente quello che ho descritto. Vedo che Kohana 3 è stato creato usando questo codice e che Codeigniter ha un'estensione che lo consente.