是否可以在PHP中覆盖对象方法并将其替换为您自己的?

时间:2014-01-26 07:07:04

标签: php wordpress

我正在使用一个WordPress插件,它有一个带有公共方法的php对象,可以为事件构建HTML内容,但是我想更改其中一个方法而不直接更改插件,所以它仍然可以用更新的版本更新没有问题。有没有办法从function.php文件重新分配或覆盖对象方法,它们的代码中没有过滤器或function_exists。我知道我可以在JavaScript中执行此客户端或使用jQuery.extend。我认为这在服务器端是不可能的,但我想我会检查。

干杯

2 个答案:

答案 0 :(得分:2)

如果要重新声明的方法未声明为FINAL,并且该类的某些方法/属性不是PRIVATE(但是,例如PROTECTED,或者更好,所有PUBLIC) - 使用对象继承。

class YourNewClass extends stubbornClass
{
   public function stubbornMethod ($params)
   {
       echo "do whatever you want, but retain $params and return value matching original class";
       echo "you can also run the parent method version as:";
       parent::stubbornMethod ($params);
   }
}

答案 1 :(得分:0)

您唯一的选择是创建自定义插件并重用旧代码。

这是因为即使您创建了一个覆盖原始类的自定义PHP类,也无法告诉插件使用您的新类而不更改创建对象的旧插件行,将旧类名更改为新类名称。