PHP致命错误:不能重新声明函数

我在文件B.inc中有一个函数A.

line 2: function A() { ... line 10: } 

在apache日志中:

PHP致命错误:无法在第10行的B中重新声明A()(以前在B.inc中声明:2)

我想你在多个部分使用require "B.inc" ? 你可以尝试在所有这些情况下使用require_once吗?

好像你的B.inc被解析两次。

我有一个类似的问题,那就是一个完全包含在一个类中的公共函数中的函数被重新报告。 我把问题减少到了

 class B { function __construct() { function A() { } } } $b1 = new B(); $b2 = new B(); 

致命错误:无法重新声明尝试创建$ b2时产生A()。

代码的原始作者已经用if(!class_exists('B'))重新声明了类声明的保护,但是如果我们尝试创建一个以上的实例,则不会保护内部函数A类。

注意:这可能与上面的问题不一样,但是它与PHP中的一些答案非常相似致命错误:无法重新声明类

你已经在其他地方声明过A()了吗?

或者,你是否在事故中打了两次电话。

尝试使用: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();