2011-03-17 102 views

回答

18

我想你在多個零件中使用require "B.inc"?你可以嘗試在所有這些情況下使用require_once嗎?

看起來像你的B.inc被解析兩次。

3

您是否已經在其他地方聲明瞭A()?

或者,你是否在意外事故中致電B.inc兩次?

嘗試使用:require_once(「B.inc」);

0

聽起來像你可能不止一次地包括B.inc。

// Rather than 
include("B.inc"); 

// Do: 
require_once("B.inc"); 

require_once()允許您在必要時對文件調用,但實際上只解析它,如果不是已經被解析。

0

確保您require_once ('B.inc')或`include_once(「B.inc」)」

0

這些人都沒事,而是使用PHP5的自動加載,而是功能的靜態方法。與對象相關的方法通常更好,但是使用靜態方法可以在許多類中重用方法名稱。 你可以調用一個靜態方法,這樣

ClassName::myFunction(); 
4

我曾在那裏的功能完全包含在一個類中的公共職能之內重新聲明正在報告了類似的問題。我將問題減少到

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

+0

這類似於一個問題,我有,但我的問題是內部具有定義的命名功能' foreach'循環。該解決方案最終使用了匿名函數。 – 2014-12-01 20:12:05

+0

我的基本答案是:不要在另一個函數中定義一個函數。 – 2015-07-01 03:19:03

相關問題