在我的應用我有我的常量:爲什麼要傳遞一個Config對象?不能設置爲常量?
define('APP_PATH', WEB_ROOT . APP_DIR);
define('LIBS_PATH', APP_PATH . LIBS_DIR);
define('MODELS_PATH', APP_PATH . MODELS_DIR);
define('VIEWS_PATH', APP_PATH . VIEWS_DIR);
define('CONTROLLERS_PATH', APP_PATH . CONTROLLERS_DIR);
etc...
,因爲他們永遠不會改變我的一次應用程序啓動和他們簡單任何類/方法中訪問。
我有一個配置文件,也與被導入到$config
對象,我繞過我的應用程序和檢索其他設置他們喜歡:
$this->config->setting('some.setting');
我從未有過在最後更改配置值或者在我的應用程序的中間,所以將它們定義爲常量並不容易,所以我可以輕鬆地在代碼中訪問它們嗎?
我不想被靜態檢索設置要麼即
Config::setting('some.setting');
我已經看過了幾個PHP框架的代碼,他們都定義路徑爲常數,但隨後有某種其他配置設置Config
類,儘管據我所見,他們從來沒有改變整個代碼中的配置設置(他們可能會因爲我沒有讀過成千上萬的每一行),很多這樣的框架似乎都喜歡靜態調用來自不同類別和人員的方法中的各種方法都表示它們是很好的框架,但在靜態調用時, ithin類/方法。
你認爲什麼是最好的配置設置呢?你是做什麼?
在這些框架的其他功能,爲不同環境下的不同配置的能力,用的傳承使(例如)你的配置文件可以定義除非特定的測試設置定義的測試環境中繼承了開發環境設置 –
有意義,但然後訪問配置設置你不需要注入一個'$ config'對象的實例到需要設置的所有對象中嗎?或者做一個像'Config :: setting('some.setting')'的靜態調用;'爲了獲得你的設置或者有另一種方式? – ibanore
您確實需要靜態注入或訪問;這正是大多數框架訪問配置的原因。使用依賴注入容器(DIC)可以簡化您向每個類中注入的內容。 –