我正在管理PHP应用程序,我们想立即启用APC。问题是我们有两个相互require_once的类。一个非常基本的例子如下:
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]无法在class_b.php中重新声明类class_b”。好的,那是因为该类已经通过class_a.php中的require_once()加载,所以如果第3个文件需要class_b.php,APC将引发错误。
如何解决这个“循环引用”问题?
答案 0 :(得分:1)
解决这个问题的最佳方法是摆脱循环依赖本身。我确实认为它符合 Code Smell 。
请尝试this article中的说明。它应该为您提供另一种方法。我只希望你能<_ em>阅读 _ Java ...
答案 1 :(得分:0)
显然有一个“功能”允许您覆盖require_once
次呼叫并允许多次包含它们。由于您似乎使用的是require_once
,因此这似乎是您的问题。要禁用此检查,请在php.ini中设置apc.include_once_override
或添加
[apc]
apc.include_once_override = 0
此设置存在重复/未找到类等的已知问题。请参阅