无法重新声明函数


Cannot Redeclare the Function

我的文件结构如下。

  1. 脚本 A --> 包括脚本 C(记录器脚本)和脚本 B。
  2. 脚本 B --> 包括脚本 C( A 记录器脚本 )
  3. 脚本 C --> 记录器脚本。包含几个常量定义和日志记录函数。

因此,如果我在脚本 A 和 B 中包含脚本 C,我会重新声明错误函数。

如果我不将其包含在脚本 B 中,则会出现未定义的函数错误。

脚本 B 包含脚本 A 将使用的一些其他函数定义。

我运行脚本 A,它应该开始记录...从脚本 B 调用函数,该函数又开始在不同的记录器实例中记录。

我试过include_once和require_once。但无济于事。它们都给了我与使用包含或要求相同的结果。

编辑1:我没有发布代码,因为它很长,我需要先检查我是否缺少一些基本概念。

使用require_onceinclude_once以避免重新声明函数

require_once 'scriptC.php';
require_once 'scriptB.php';

include_once 'scriptC.php';
include_once 'scriptB.php';

这将确保您的每个包含只加载一次。

我解决了。这是我包含文件的顺序。

我搞砸了包含顺序,在编译脚本 A 时它包含两次。我通过更改脚本 A 中包含语句的顺序并从脚本 B 中删除包含来修复它

像这样包装函数

if ( ! function_exists('foo'))
{
  function foo($bar)
  { 
    ... 
  }
}