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'uso del modello MVC. Ci sono alcuni buoni articoli sulla costruzione dei propri framework MVC, uno di questi è Build a MVC Framework con PHP .
MVC sta per Model, View, Controller. Puoi chiamare questi approcci come preferisci: MVC, HMVC, MVP. L'essenza è isolare i singoli componenti del 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 "Vista" lasciando intatte le altre parti.
Non sto suggerendo di seguire ciecamente il modello MVC, MVP o qualsiasi altra cosa "MV". È questione di adeguatezza, efficacia e gusto.
L'applicazione del sito Web dinamico comune può includere componenti quali:
- Il punto di ingresso, diciamo
index.php
- Le librerie / classi di supporto
- Il router di richiesta
- I moduli, i componenti o i controller
- Il motore del modello o forse viste singole
La vera applicazione web può includere qualsiasi altro componente come gestori di eventi, dispatcher e hook di eventi, ma in realtà si tratta di sfumature. Bene, vorrei presentarlo nel modo in cui voglio presentarlo:
La routine operativa quadro 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 ed esegue un'ulteriore inizializzazione del nostro ambiente di programmazione.
- L'URL viene passato all'istanza del router di richiesta. Questo passaggio può far 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 instradata e invia i dati alla vista per il rendering.
La struttura delle cartelle del progetto corrispondente è mostrata nel diagramma.
Ti suggerirei di indagare su come sono implementati gli altri framework. I CMS / framework consigliati per iniziare sono CodeIgniter, OpenCart, Joomla 1.5 e Tango CMS.