2013-09-21 120 views
0

我有一些配置文件,他們不需要在任何地方使用,所以我不希望它自動加載,你能告訴我如何加載控制器中的配置文件和它可以得到serviceLocator,不要告訴我使用zend \ config \ config,謝謝我如何加載配置文件,但不自動加載zf2

回答

1

首先,建議不要問一個問題,然後直接說你不希望有人告訴你關於XY。如果XY是唯一的方法呢?

你總是可以做這樣的事情

$onlyNowConfig = require_once('./config/onlyNowConfig.php'); 

PHP的當前工作目錄是你的應用程序的根,因爲它是在你的public/index.php通過chdir()功能設置。

除此之外,在module.config.php中包含配置並沒有真正的危害。 ModuleManager將檢查Module類中是否存在getConfig()函數。如果存在,配置將被加載。通常每個模塊都有一個將被加載的配置。而且,將100-200配置行外包到單獨的文件中並沒有真正的速度(dis)優勢。只需將它包含在你需要的少量動作上就可以實現的額外I/O實際上會比合並配置所需的時間更長(可能類似於總共1ms與2-3ms I/O) 。

我建議只將它包含在您的module.config.php中,並且您可以通過ServiceLocator在任何地方使用它,否則只需包含/需要您需要的一個配置文件,無論您身在何處。 include/require參數永遠不會改變,因爲PHP的工作目錄不會改變,不管你在哪個文件中(只要你不通過chdir()重新設置它 - 這是非常不推薦的)。

+0

謝謝你的建議(首先,建議不要問一個問題,然後直接說你不想讓別人告訴你關於XY的問題,如果XY是唯一的方法呢?), 因爲我使用codeigniter很長一段時間,在codeigniter中,你可以像這樣載入一個配置文件$ this-> load-> config('file name'),然後獲取像這樣的值,$ this-> config-> item('key '),所以我嘗試在zf2中找到像codeigniter這樣的方案。 – ninean

+0

正如我所說,即使你說出了一個理由,但我不認爲這是一個可信的理由。只需將你的模塊配置中的所有config-params組合在一起,你就可以在任何地方使用它。當你不需要它時,不要使用它,但是當你需要它時,它就在那裏。額外的I/O負載只會造成太多的開銷。 – Sam

+2

查看'Zend \ Config \ Factory'類,特別是它提供的靜態'fromFile'方法。 – Crisp