2009-05-07 60 views
0

首先,由於各種流行軟件使用此方法(如SMF),因此我認爲這不是壞習慣。編輯PHP文件以通過PHP配置

無論如何,所以我現在有這樣的代碼:

<?php 
// main visual config 
$cfg['lang'] = 'en'; 

// paths 
$path['admin'] = 'index.php?p=admin'; 
$path['admin2'] = 'zvfpcms/admin'; 
$path['root'] = 'zvfpcms'; 
$path['images'] = 'zvfpcms/img'; 
$path['css'] = 'zvfpcms/css'; 
$path['js']  = 'zvfpcms/js'; 
$path['pages'] = 'zvfpcms/pg'; 
?> 

的事情是,我想$ CFG變量(一個或多個),直接通過接口進行編輯。

這將如何實現?我想不出替換字符串是一個好主意,尤其是當我創建的未來$ cfg變量有很多可能性(甚至是無限)時。

或者說,我將不得不滿足於不同的方法......

答案感謝!

回答

0

只需在數據庫中擁有所有設置,並在設置更改時重新構建配置文件。

+0

該軟件是平面文件,但我仍然會迴應。以假設用戶「Bob」爲例。 Bob重命名zvfpcms文件夾。這將如何處理? – unrelativity 2009-05-07 07:04:59

+0

如果它是平面文件,請使用Spencer關於使用XML文件的想法。如果腳本確定它運行在不同於XML文件規定的目錄中,則應該重建PHP配置文件。 – 2009-05-07 07:35:26

0

沒有你的PHP編輯PHP代碼。改爲使用XML配置文件。讀取XML信息,如果要更改,請更改XML文件生成的數據結構中的值,然後將其吐出到新的配置文件中。

+0

與我的類似,只是您使用的是XML文件。 無論哪種方式都是IMO的最佳方法。 – 2009-05-07 07:04:07

+0

我認爲採用這兩種方法,取決於具體的設置,是最好的方法。有時,直接訪問文件而不是挖掘數據庫試圖記住哪個表存儲配置設置會更簡單。 – 2009-05-07 07:07:30

+0

考慮到配置的數據幾乎在每個頁面上都使用,這會對速度產生什麼影響嗎? – unrelativity 2009-05-07 07:10:50

0

將設置存儲在數據庫中,或者您可以使用標準ini文件(鍵=值對);

lang=en 
timezone=CET 

閱讀他們:

function loadSettings() { 
    $cfg = array(); 
    foreach (file('settings.ini') as $line) { 
     list ($key, $value) = explode('=', $line); 
     $cfg[$key] = $value; 
    } 
    return $cfg; 
} 

文件I/O比標準的數據庫調用你少efficiant,特別是如果你已經有一個打開的連接到數據庫。

0

我認爲這是不好的做法的原因是因爲編輯前可能有一個正在運行的系統,編輯時出現了一些錯誤(也許您沒有轉義單引號字符),編輯整個應用程序變得不可用,因爲PHP無法解析配置文件,這會影響你做的幾乎所有事情。

XML建議並不錯,因爲您可以處理讀取XML時發生的任何錯誤。

如果你有一個數據庫(閱讀這篇文章,看起來你不使用一個,這很好),這將是數據的最佳場所 - 這就是它的目的。在平面文件世界中,讀取非PHP文件並解釋它比自己編輯PHP文件好得多。

+0

不存在用於轉義引號的功能嗎?我認爲它被稱爲addslashes? – unrelativity 2009-05-07 07:35:45

+0

有很多逃脫例程 - 但這只是一個錯誤,你可以讓你的整個應用程序死掉。把它看作一個例子而不是一個清單! – Fenton 2009-05-08 08:11:43

1

嗯,我剛剛找到Unkwntech的答案here ......我會把它留在這裏以供參考。

1

Pear Config將允許您輕鬆地從不同來源讀取和寫入配置,包括PHP文件/數組。您可能需要將$cfg轉換爲其自己的文件,並將其包含在內,以便其他變量等不受影響。

你也可以用var_export()自己做,然後在文件上寫,你可能需要將變量移動到它自己的文件中。我認爲這會比Pear類寫得更具可讀性/可讀性更差的PHP。