APC,PHP和两个相互需要的类

时间:2012-03-13 17:20:21

标签: php opcode-cache

我正在管理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将引发错误。

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

2 个答案:

答案 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

此设置存在重复/未找到类等的已知问题。请参阅