【问题标题】:Overriding an objects method in PHP at runtime在运行时覆盖 PHP 中的对象方法
【发布时间】:2014-05-01 03:56:21
【问题描述】:

是否可以在 PHP 中“覆盖”objects 方法?示例:

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

$t = new Test();

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

【问题讨论】:

    标签: php class oop object overriding


    【解决方案1】:

    不,你不能使用anonymous functions

    虽然您可能可以使用__call() 执行类似的操作,如here in the PHP documentation 所示,或者将匿名函数分配给属性,但我觉得它会很快变得丑陋并且难以遵循和维护。

    如果你想覆盖一个对象方法,你应该通过扩展基类并创建一个同名的方法来实现,如Example #1 here所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      相关资源
      最近更新 更多