2012-06-28 36 views
0

我在類中定義的簡單__callStatic魔術方法:PHP __callStatic沒有間歇

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

腳本有致命錯誤「未定義的方法MyClass的:: require_foo」執行時死亡。

然而 ..

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

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

那麼它可以在接下來的頁面加載。後續頁面加載失敗,直到我對文件進行另一次更改。

這是令人毛骨悚然的,對吧?但每次都可以100%重現。

+0

回答的信息太少。請提供可重現的測試案例 – Gordon

+1

這需要首先進行基本的調試。 - 只需添加另一個'公共靜態函數fooMooBuh($ method,$ args){var_dump(__ NAMESPACE__,__CLASS__,__FUNCTION__,$ method,$ args); die();}'並在你打電話之前調用它。它給了什麼?對於第二個調用,刪除'die()'並檢查你是否還沒有被調用。根據你的信息 - 如你編輯文件 - 它必須工作。然後第三個電話,你應該再次得到你的錯誤。這是否發生? – hakre

+0

此外,您每次都可以通過'MyClass :: __ callStatic('require_foo',array());'來調用。確定它確實存在? – hakre

回答