我有一個函數的文件B.incPHP致命錯誤:不能重新聲明函數
line 2: function A() {
...
line 10: }
在Apache日誌:
PHP致命錯誤:不能重新聲明A()(B中先前聲明.inc:2)B在線10
我有一個函數的文件B.incPHP致命錯誤:不能重新聲明函數
line 2: function A() {
...
line 10: }
在Apache日誌:
PHP致命錯誤:不能重新聲明A()(B中先前聲明.inc:2)B在線10
我想你在多個零件中使用require "B.inc"
?你可以嘗試在所有這些情況下使用require_once
嗎?
看起來像你的B.inc被解析兩次。
您是否已經在其他地方聲明瞭A()?
或者,你是否在意外事故中致電B.inc兩次?
嘗試使用:require_once(「B.inc」);
聽起來像你可能不止一次地包括B.inc。
// Rather than
include("B.inc");
// Do:
require_once("B.inc");
require_once()
允許您在必要時對文件調用,但實際上只解析它,如果不是已經被解析。
確保您require_once ('B.inc')
或`include_once(「B.inc」)」
這些人都沒事,而是使用PHP5的自動加載,而是功能的靜態方法。與對象相關的方法通常更好,但是使用靜態方法可以在許多類中重用方法名稱。 你可以調用一個靜態方法,這樣
ClassName::myFunction();
我曾在那裏的功能完全包含在一個類中的公共職能之內重新聲明正在報告了類似的問題。我將問題減少到
class B {
function __construct() {
function A() {
}
}
}
$b1 = new B();
$b2 = new B();
致命錯誤:無法重新聲明嘗試創建$ b2時產生A()。
代碼的原始作者已經使用if(!class_exists('B'))重新聲明瞭類聲明的保護,但是如果我們試圖創建多個函數,則不會保護內部函數A班級的一個實例。
注:這可能是不一樣的問題上面一樣,但它是非常相似的一些問題的答案在PHP Fatal error: Cannot redeclare class
這類似於一個問題,我有,但我的問題是內部具有定義的命名功能' foreach'循環。該解決方案最終使用了匿名函數。 – 2014-12-01 20:12:05
我的基本答案是:不要在另一個函數中定義一個函數。 – 2015-07-01 03:19:03