在运行时覆盖PHP中的对象方法

时间:2014-05-01 03:56:21

标签: php class oop object override

是否有可能"覆盖" PHP中的对象方法?例如:

<?php
class Test {
    function Foobar() {
        echo "Foobar";
    }
}

$t = new Test();

// Replace the Foobar-method with new code
$t->Foobar() = function() {
    echo "New Code";
};
?>

1 个答案:

答案 0 :(得分:0)

不,您可能无法使用anonymous functions

虽然您可以使用显示here in the PHP documentation__call()或者将匿名函数分配给属性来执行类似操作,但我觉得它会很快变得难看并且很难跟踪和维护。

如果要覆盖对象方法,则应通过扩展基类并创建同名方法来实现,如Example #1 here所示。