考慮一個大的應用程序,它自動加載階級作爲階級:加載類的特定版本時自動加載使用
function __autoload($class)
{
require_once("/var/www/application/classes/{$class}.php");
}
可能有幾十其使用類文件,所有這些都依賴於一個特定的錯誤在課堂裏。現在我已經修復了這個bug,我需要更新所有調用該類的地方。
從課堂內部,我想列出已知固定的地方,從已修復錯誤的地方調用類。對於未列入白名單的地方,我會複製舊的行爲,並在白名單中提供正確的行爲。 有沒有一個乾淨的方式來做到這一點?
我正考慮在修復期間(可能需要幾天)添加一個新的構造函數參數$useFixedVersion
,然後返回並在之後移除該參數。然而,這意味着我需要遍歷每個地方兩次,這似乎是一個相當糟糕的解決方法。 有沒有更好的方法來檢測班級被調用的位置?考慮到實例方法和靜態方法都受到影響。
讓我們暫時忽略耦合和錯誤代碼設計,這意味着我需要更正調用代碼,並將這個不幸的事實作爲給定的。讓我們也忽略一個不幸的事實,那就是我不能簡單地在Git中分支,做出我的修復,然後推向生產!
謝謝丹尼斯。它看起來像debug_backtrace()將完美。我沒有看到使用名稱空間作爲一個很好的解決方法。 – dotancohen