2014-11-23 99 views
0

我想有在PHP中重新聲明特定函數的自由。換句話說,我有腳本,其中包括一些文件:如何避免致命的「PHP致命錯誤:無法重新聲明[..]」

include_once(dirname(__FILE__) . '/../drupal/includes/bootstrap.inc'); 
include_once(dirname(__FILE__) . '/../drupal/includes/common.inc'); 

在在某些條件下這個腳本執行後來,很顯然,我們需要加載的所有應用程序,不僅具體的文件,但是。這會導致重新聲明的錯誤,因爲當引導完整的應用程序時,一些功能已經包含在開頭(即bootstrap.inc,common.inc)。什麼是解決方案?在再次包含它之前可以刪除導入的文件以避免重新聲明錯誤?我可以控制決定什麼時候它的okey重新聲明和何時不在PHP中? 謝謝你的幫助

+1

可能是http://stackoverflow.com/questions/2640958/redefining-php-function的副本? – Gabriel 2014-11-23 14:02:34

+0

你的意思是同一個函數是在多個文件中定義的嗎?如果是這樣,爲什麼?這些聲明有什麼不同?如果是這樣,爲什麼他們有相同的名字?如果您更好地構建代碼,那麼隨着您增長和維護應用程序,您可能會避免將來不僅僅是此問題,而且還會避免其他許多問題。 – IMSoP 2014-11-23 14:08:14

+0

IMSoP,重新聲明是一樣的......關於你關於結構的觀點,我正在整合獨立的應用程序,我沒有太多的結構控制。我希望PHP可以給我這種控制......如果我知道重新聲明和它的罰款,那麼PHP先生請讓腳本運行...爲什麼致命的錯誤? – latvian 2014-11-23 14:34:47

回答

3

你不能「取消」一個文件。一旦進入,它就進入了。

通常,include_oncerequire_once會起作用。在嘗試再次包含它之前,PHP會檢查它是否已包含在內。我會確保它在所有地方都被使用。如果你打電話的功能是在課堂內,我會檢查autoloading作爲幫助管理你的包含的一種方式。

相關問題