【问题标题】:PHP Fatal error: Cannot redeclare function [duplicate]PHP致命错误:无法重新声明函数[重复]
【发布时间】:2011-07-17 01:48:54
【问题描述】:

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

line 2:  function A() {

           ...

line 10: }

在 apache 日志中:

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

【问题讨论】:

    标签: php apache


    【解决方案1】:

    您是否已经在其他地方声明了 A()?

    或者,你是不是不小心给 B.inc 打了两次电话?

    尝试使用:require_once("B.inc");

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        听起来您可能不止一次包含 B.inc。

        // Rather than
        include("B.inc");
        
        // Do:
        require_once("B.inc");
        

        require_once() 允许您在必要时调用文件,但仅在尚未解析时才实际解析它。

        【讨论】:

          【解决方案4】:

          确保您require_once ( 'B.inc' ) 或 `include_once ('B.inc')'

          【讨论】:

            【解决方案5】:

            这些人没事,但宁愿用php5,autoload,而不是functions静态方法。与对象相关的方法大多更好,但使用静态方法可以让您在许多类中重用方法名称。 你可以像这样调用静态方法

            ClassName::myFunction();
            

            【讨论】:

              【解决方案6】:

              我有一个类似的问题,一个完全包含在一个类中的公共函数中的函数被报告为重新声明。我将问题简化为

              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 循环中定义了一个命名函数。该解决方案最终改为使用匿名函数。
              • 对我来说基本答案是:不要在另一个函数中定义一个函数。
              猜你喜欢
              • 2017-05-22
              • 1970-01-01
              • 2010-11-28
              • 2011-09-12
              • 2014-01-13
              • 2010-10-17
              • 2014-11-07
              • 1970-01-01
              相关资源
              最近更新 更多