2012-05-01 36 views
-2

我發現了幾個類似的問題,但我有一個稍微不同的細微差別 - 即,我無法編輯包含的文件。如何從包含的具有衝突名稱的PHP語句中檢索值?

我有一個目錄,有幾十個相同的php應用程序的克隆。我需要讀取每個配置文件,這是一個將數據庫設置定義爲常量的php文件,然後連接到該實例的數據庫。很明顯,因爲所有的配置文件都是針對同一個應用程序的,所以循環遍歷這些目錄幷包括所有的配置文件給了我100個「Constant DB_HOST already defined」的聲明。

如果我可以爲每個配置文件預先安裝一個php命名空間,但這樣做會很容易,但我無法修改配置文件,只能讀取它們。由於不可能在讀取目錄內容的循環內建立命名空間,所以我被卡住了。

除了用fopen/file_get_contents讀取文件並重新解析內容,有沒有一些巧妙的方法來循環這些配置文件以包含它們的常量值?我覺得我必須俯視一些東西。

感謝

回答

0

而不是使用每個文件包括,你不能簡單地打開他們每個人作爲一個文本文件,並使用fread()讀取每個文件的內容到一個字符串?

這樣你就可以使用正則表達式解析出你想要的字段,並且由於你沒有將配置文件包含爲PHP,所以你將避開常見的問題。

+0

我會喜歡看到另一個解決方案,它允許PHP解析文件,而不是自己做,但最終這是唯一的選擇。儘管我提到我不想在我的問題中這樣做,但我想這是最接近答案的事情。 – jxn

1

顯然這是一個了不起的設計問題,並應通過改變設計,而不是愚蠢的把戲解決老大難問題而使全亂了完整的解決。

+0

同意,但不幸的是,這些應用程序實例並不在我的控制之下,所以我別無選擇,只能將這部分保留下來。 – jxn

0

你沒有看到任何東西。從manual

一旦定義了一個常量,它永遠不會被改變或未定義。

順便說一句,我希望你可以得到一個項目,重構混亂批准。 :)

+0

我希望。不幸的是,數十個應用程序本身並不在我的控制之下,我只能環繞它而不接觸它。 (抱怨) – jxn