2010-11-18 11 views
5

Sto scrivendo la mia prima configurazione di pattern MVC bare bare basic in PHP. So che le variabili globali sono cattive e so anche che non voglio che tutte le mie classi abbiano accesso a tutte le mie variabili di configurazione.Modo corretto per gestire la variabile di configurazione in MVC setup (PHP)

Ho un file settings.php che mi piacerebbe definire un gruppo di costanti, come le mie informazioni sulla connessione db, informazioni sulla struttura della directory, indirizzi e-mail e così via. Sarà una posizione centralizzata che contiene tutte le mie informazioni importanti.

Qual è il modo migliore per implementare una classe di configurazione in modo che ciascuna delle mie classi base per il mio controller e modello abbia accesso solo ai vani di configurazione di cui hanno bisogno? Ad esempio, la mia classe base del modello dovrebbe avere accesso alle informazioni di connessione db.

Fondamentalmente mi sto solo chiedendo come tutti gli utenti che eseguono il rollup della propria configurazione MVC gestiscano le informazioni di configurazione senza dichiarare variabili globali, come quando eravamo abituati a tornare nei giorni procedurali.

Grazie.

+0

Si chiama PMVC. La variabile globale che evita il meme è anche un po 'priva di senso se troppo generalizzata. – mario

+0

Ah uomo non buone risposte :( –

risposta

0

Ho eseguito il rollover del mio setup MVC. (Ancora andando forte. Potrebbe open source). Il modo in cui lo faccio è avere uno script di init che trasmetta tutte quelle costanti a una classe di controllo.

La classe di controllo è un Singleton. Quindi ogni volta che un'altra classe ha bisogno di accedervi, ottiene solo l'istanza esistente della classe di controllo e tutte le variabili sono disponibili da essa.

2

Stai per ottenere un sacco di risposte su questo come fondamentalmente si riduce alle preferenze.

Personalmente, è stato utilizzato un array di configurazione. Esempio:

$conf['db']['username'] = "username"; 
$conf['db']['password'] = "password"; 

Poi basta passare ByRef i pezzi che vi interessano nelle dove devono andare.

Problemi correlati