繁体   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