2010-12-08 174 views
0

我有settings.php文件,我想保留一些常量,就像我的db連接信息。PHP封裝全局變量

我想要完成什麼,但對於我的生活,我無法想象如何做到這一點......我不想每個常量在我的settings.php全局可用。我正在使用MVC設置,例如我的控制器中沒有我的db連接信息。

我的問題是,我該如何設置一個設置文件是這樣的:

class Settings { 

    const HOST = 'localhost'; 

    .... 

    const DEBUG = true; 
} 

然後將其加載到我的應用程序,使我的數據庫連接常量封裝到只是我的Model類等。

我確定我沒有解釋這個最好的我可以,但基本上我想A:有一箇中心位置的所有設置和B:使它可以控制對整個我的設置的訪問權限應用程序,以便它們不是全部可用的。

我遇到的問題是,如果我在我的父類中包含settings.php文件,那麼它所固有的所有類也都可以訪問settings.php。

+0

這樣的常量有什麼意義?使用普通變量,創建一個PDO連接並取消設置(或讓GC處理)這些變量。 – Crozin 2010-12-08 00:23:38

+0

所以如果有東西被包含,那麼值就不能被改變。所以,你認爲這並不重要? – imns 2010-12-08 01:03:58

回答

1

將它們包裝在一個函數中,然後調用它。

function init() { 
    $model = new Model; 
    $model->setConfigurationValue('name', 'value); 
    // etc ... 
} 
init(); 

這樣,沒有什麼是全球性的。

個人而言,我使用symfony components YAML庫將我的配置存儲在YAML文件中,該文件會自動加載到單一配置對象中,該對象允許從任何地方訪問,但阻止狀態更改。易於更改配置而不會弄亂代碼,並且我使用多個YAML文件,以便我的DEV環境添加額外的配置等。

0

我將在名爲「local_settings.php」的文件中定義您的類。 只需「包含」該文件並將您的課程安排在您的PHP程序的頂部即可。

對於所有關於全局變量的人來說,這些都是全球性的值!您不可能有另一個班級想要在模型的不同版本上連接到不同的數據庫。