簡體   English   中英

如何在PHP4中重新聲明,覆蓋或重命名函數?

[英]How can I redeclare, overwrite or rename a function in PHP4?

我正在尋找一種方法來重新聲明,覆蓋或重命名PHP4中的函數,以便在調用另一個函數的類上執行單元測試。 我希望這個函數成為測試函數。

我有幾個限制:

  • 它必須適用於PHP4。
  • 它必須開箱即用而不安裝其他東西。 (沒有adp或其他)。

從技術上講,可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM