2013-11-26 75 views
0

目前,我使用一個名爲$config的變量,它是一個包含應用程序設置的大關聯數組,例如文件夾配置,數據庫連接,要匹配的URL等等。該變量在其自己的文件system/config.php中定義,其被主文件system/index.php包含。

分別位於通過global $config;

system/request.php化妝此全局配置變量的這是不好的做法,爲什麼某些系統功能?什麼是處理全局配置的更好方法?

+1

全局變量是不好的做法 –

+0

的代名詞@shuvo所以我應該通過配置所有的系統功能參數?有什麼更好的辦法來處理這個問題? – danijar

+0

@danijar你應該在應用程序的引導階段讀取配置,將它應用到那裏的各種組件,然後將這些組件連接在一起。 –

回答

1

恕我直言,只要有一個全局變量不simulatenously通過不同的工藝修改(即它是隻讀的所有的),它是確定有它在全球範圍內。

模擬只讀變量的方法是用它和一個私有變量,將返回該變量的公共方法來封裝它在一個全局對象。

例子:

class Config { 
    private $conf = array(/*read from file?*/...); 

    function getconf() { 
     //AFAIK, any attempt to write into the returned array will make PHP's 
     //core to duplicate it, so the original config won't be modified 
     //(as long as $conf does not contain objects, which are always addressed 
     //by reference) 
     return $conf; 
    } 
} 
+0

有沒有辦法強制他們只讀? – danijar

+0

不變的全局變量在php中有一個不同的名稱:**常量**。全球狀態是**從不**好。 –

+0

是的,如果你將它作爲一個對象的「只讀屬性」實現。你可以用一個包含數組的私有變量和一個返回它的副本的方法來定義一個類。 – Claudix

相關問題