Hai sollevato una domanda molto interessante e fondamentale. La domanda riguardante l'architettura del progetto su larga scala e l'organizzazione della struttura delle cartelle (che è secondaria all'architettura).
Oggi l'approccio più comune alla costruzione dell'architettura del framework CMS è l'utilizzo del pattern MVC. Ci sono alcuni buoni articoli su come costruire i propri framework MVC, uno di questi è Crea un framework MVC con PHP .
MVC sta per Modello, Visualizza, Controller. Puoi chiamare questi approcci come preferisci: MVC, HMVC, MVP. L'essenza è isolare i singoli componenti del tuo sistema. Il "Controller" recupera i dati dal "Modello" e li invia a "Visualizza", che esegue il rendering dell'HTML finale. Hai già implementato la "V" nella tua contacts.php
e "MC" nella tua contacts_class.php
. Quindi hai isolato la vista dal modello e dal controller. Ora puoi facilmente cambiare la tua "vista" lasciando intatte le altre parti.
Non ti sto suggerendo di seguire ciecamente MVC, MVP o qualsiasi altro pattern "MV". È questione di appropriatezza, efficacia e gusto.
L'applicazione web del sito web comune può includere componenti come:
- Il punto di ingresso, ad esempio
index.php
- Le librerie / classi helper
- Il router di richiesta
- I moduli, i componenti o i controller
- Il motore del modello o forse singole viste
La vera applicazione web può includere qualsiasi altro componente come gestori di eventi, dispatcher di eventi e hook, ma queste sono in realtà sfumature. Bene, permettimi di presentarlo nel modo in cui voglio presentarlo:
La routine di funzionamento del framework comune come segue:
- La richiesta del browser viene inviata direttamente all'eseguibile / script del punto di ingresso (
index.php
).
- Lo script del punto di ingresso carica le librerie helper, le classi e esegue un'ulteriore inizializzazione del nostro ambiente di programmazione.
- L'URL viene passato all'istanza del router di richiesta. Questo passaggio può essere la parte del passaggio 2.
- Il router di richiesta analizza l'URL e invia l'operazione a un particolare componente, modulo o controller.
- Il componente (o controller) elabora la richiesta indirizzata e invia i dati alla vista da rendere.
La struttura della cartella del progetto corrispondente è mostrata nel diagramma.
Ti suggerisco di indagare su come sono implementati gli altri framework. I CMS / framework consigliati per iniziare sono CodeIgniter, OpenCart, Joomla 1.5 e Tango CMS.