2014-06-24 40 views
0

我在WordPress中調用來自不同位置的類似PHP腳本。 他們都有共同點,他們調用另一個PHP文件(genlib.php),它的某種類型的庫與大量的PHP功能。Bypass for can not re-declare function

當我碰到「can not re-declare function ... in genlib.php」錯誤時,我將每個函數都封裝到「if!function_exists」條件中以避免這種情況。

這很難看,因爲我必須這麼做很多次。

我該如何避免在我的腳本中包含genlib.php文件的級別?

回答

4

我相信在包含文件genlib.php的所有文件中使用include_oncerequire_once應解決此問題。

更新:基於OP的評論,看來這個解決方案並不多不同的腳本加載庫,供include_oncegenlib.php工作。在這種情況下,OP可能不得不退化爲使用包含整個genlib.php的警戒語句。

if (!defined('GEN_LIB_PHP')) { 
    define('GEN_LIB_PHP', true); 
    // Rest of code for genlib.php 
} 
+0

這不起作用,因爲第一個WP小部件加載了一個腳本,它本身通過include_once調用genlib.php。 WP小部件#2中完全不同的腳本也是如此。我認爲這不起作用,因爲這不在同一個腳本中。 – mzurhorst

+0

@mzurhorst,在這種情況下,你可能不得不恢復爲在'genlib.php'上做C風格的'#define'看守。 – merlin2011

+0

@mzurhorst,請參閱[問題說明](http://stackoverflow.com/q/2595171/391161)瞭解如何在'genlib.php'中執行此操作。 – merlin2011

1

使用include_once()作爲文件。這可以防止系統再次運行代碼,如果之前包含該文件。這同樣適用於requrie_once()