我正在尋找一種重新聲明,覆蓋或重命名PHP4中的函數的方法,以便對調用另一個函數的類執行unittest。我希望這個函數是一個測試函數。如何在PHP4中重新聲明,覆蓋或重命名函數?
我有幾個限制:
- 它爲PHP4工作。
- 它必須開箱即用,無需安裝別的東西。 (沒有adp或其他)。
我正在尋找一種重新聲明,覆蓋或重命名PHP4中的函數的方法,以便對調用另一個函數的類執行unittest。我希望這個函數是一個測試函數。如何在PHP4中重新聲明,覆蓋或重命名函數?
我有幾個限制:
的覆蓋功能,您可以如使用function_exists
函數退出但檢查你可以重新聲明函數
if (!function_exists('function_name')) {
// ... proceed to declare your function
}
從技術上講,可以使用override_function()
或rename_function()
功能。
雖然這不是一個非常乾淨的方式,但我建議您更新您的課程,讓您將呼叫重定向到其他地方。這樣
class MyClass {
public function doSomething() {
...
do_complex_calc();
...
}
}
的東西:
例如,您可以更改此
class MyClass {
public $calc_helper = 'do_complex_calc';
public function doSomething() {
...
$helper = $this->calc_helper;
$helper();
...
}
}
$x = new MyClass();
$x->calc_helper = 'another_func_for_testing';
$x->doSomething();
這可以更加清理,但它顯示的總體思路。例如,我不建議將$calc_helper
變量作爲public來使用 - 我會實現某種方法讓您改變它。
可能的重複http://stackoverflow.com/questions/3620659/is-it-possible-to-overwrite-a-function-in-php –