[英]How can I redeclare, overwrite or rename a function in PHP4?
我正在尋找一種方法來重新聲明,覆蓋或重命名PHP4中的函數,以便在調用另一個函數的類上執行單元測試。 我希望這個函數成為測試函數。
我有幾個限制:
從技術上講,可以使用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 - 我會實現某種方法來讓你改變它。
要覆蓋該函數,您可以使用function_exists
檢查函數是否退出但是您可以重新聲明該函數
if (!function_exists('function_name')) {
// ... proceed to declare your function
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.