Ho un mio CMS sviluppato in maniera procedurale riutilizzando tutti i vari script che ho realizzato nel tempo e adesso vorrei trasformarlo in qualcosa di più efficiente in vero stile OOP.

Ho letto parecchie guide in merito al Singleton, al MVC, ho studiato taste framework (sviluppato da html.it) e mi sono convinto che non posso fare a meno di aggiornare il mio sistema.

Avrei la necessità di capire, però, come strutturare al meglio il mio software eliminando l'uso del globals che odio.

Attualmente, all'apertura di una pagina, il sistema archivia tutte le opzioni di sistema, le configurazioni e le informazioni necessarie in diversi array che vengono richiamati appunto tramite globals.

Ho le seguenti classi che svolgono le funzioni necessarie:

- session -> tiene traccia degli utenti;
- gestion -> si occupa di gestire form;
- body -> contiene le parti del sito;
- permessi -> gestisce i permessi degli utenti
ecc...

cioè tutte le funzionalità vengono svolte da classi ad hoc.

Ora mi chiedo: come posso riscrivere tutto in maniera corretta?
Qual'è il modo miglior per far interoperare tra loro le classi? Come implemento il singleton?