如何在PHP中向对象添加方法?

Sto*_*ped 4 php oop class

我有一个面向对象的库我想添加一个方法,虽然我很确定我可以进入该库的源并添加它,我想这就是通常所说的坏主意.

我如何正确地将自己的方法添加到PHP对象?

更新 **编辑**

我试图添加一个方法的库是simpleHTML,没什么特别的,只是一种提高可读性的方法.所以我尝试添加到我的代码中:

class simpleHTMLDOM extends simple_html_dom {
  public function remove_node() {
    $this->outertext = "";
  }
}
Run Code Online (Sandbox Code Playgroud)

这让我:Fatal error: Call to undefined method simple_html_dom_node::remove_node().很明显,当你在simpleHTML中获取一个元素时,它返回一个类型为simple_html_dom_node的对象.

如果我将方法添加到simple_html_dom_node我的子类不是由simpleHTML创建的...那么坚持下一步去哪里.

Pas*_*TIN 6

一个解决方案是创建一个新类,从库中扩展一个类 - 然后,使用你的类,它拥有原始类的所有方法,加上你的类.

这是一个(非常快速和简单)的例子:

class YourClass extends TheLibraryClass {
  public function yourNewMethod() {
    // do what you want here
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,你使用你的班级:

$obj = new YourClass();
$obj->yourNewMethod();
Run Code Online (Sandbox Code Playgroud)

你可以调用TheLibraryClass类的方法,因为你继承了那个的属性和方法:

$obj->aMethodFromTheLibrary();
Run Code Online (Sandbox Code Playgroud)


关于这一点,您可以查看本手册的" 对象继承"部分.


并且,正如您所猜测的那样,修改库肯定是一个坏主意:每次更新库时都必须重新进行修改!

(有一天,你会忘记 - 或者你的一个同事会忘记^^)