0

我正在管理一个 PHP 应用程序,我们现在想启用 APC。问题是我们有两个相互需要的类。一个非常基本的示例如下所示:

in class_a.php

require_once('path/to/class_b.php)';

class a extends something {
    //
}

in class_b.php

require_once('path/to/class_a.php');

class b extends something2 {
    //    
}

但是,当我们启用 APC 时,会出现“[apc-error] Cannot redeclare class class_b in class_b.php”。好的,那是因为已经通过 class_a.php 中的 require_once() 加载了该类,所以如果某个第 3 个文件需要 class_b.php,APC 将引发错误。

如何解决这个“类似循环引用”的问题?

4

2 回答 2

1

解决这个问题的最好方法是摆脱循环依赖本身。我认为它实际上符合Code Smell的要求。

尝试按照本文中的说明进行操作。它应该为您提供另一种方法。我只是希望你能_阅读_Java ...

于 2012-03-13T17:45:13.060 回答
0

显然,有一个“功能”可以让您覆盖require_once调用并允许它们被包含多次。由于您似乎正在使用require_once,这似乎是您的问题。要禁用此检查apc.include_once_overridephp.ini 中的设置或添加

[apc]
apc.include_once_override = 0

此设置已知存在重复/未找到的类等问题。看看这是否有帮助

于 2013-07-25T17:34:59.047 回答