【发布时间】:2011-07-17 01:48:54
【问题描述】:
我在文件 B.inc 中有一个函数 A
line 2: function A() {
...
line 10: }
在 apache 日志中:
PHP 致命错误:无法在第 10 行的 B 中重新声明 A()(之前在 B.inc:2 中声明)
【问题讨论】:
我在文件 B.inc 中有一个函数 A
line 2: function A() {
...
line 10: }
在 apache 日志中:
PHP 致命错误:无法在第 10 行的 B 中重新声明 A()(之前在 B.inc:2 中声明)
【问题讨论】:
您是否已经在其他地方声明了 A()?
或者,你是不是不小心给 B.inc 打了两次电话?
尝试使用:require_once("B.inc");
【讨论】:
我想您在多个部分中使用require "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,autoload,而不是functions静态方法。与对象相关的方法大多更好,但使用静态方法可以让您在许多类中重用方法名称。 你可以像这样调用静态方法
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 循环中定义了一个命名函数。该解决方案最终改为使用匿名函数。