0

我在课堂上定义了一个简单的 __callStatic 魔术方法:

public static function __callStatic($method, $args) {
    if(substr($method, 0, 8) == "require_") {
          // do stuff
    }
}

该脚本在执行时因致命错误“Undefined method MyClass::require_foo”而终止。

然而..

如果我以任何方式修改文件,例如:

public static function __callStatic($method, $args) {
    if(substr($method, 0, 8) == "require_") {
          // HELLO
    }
}

然后它适用于下一页加载。在我对文件进行另一次更改之前,后续页面加载失败。

这很令人毛骨悚然,对吧?但每次都是 100% 可重现的。

4

1 回答 1

0

此问题与服务器上的操作码缓存有关。eAccelerator 的 __callStatic() 存在已知问题。https://eaccelerator.net/ticket/382

于 2012-06-28T17:56:08.517 回答