我有一个面向对象的库我想添加一个方法,虽然我很确定我可以进入该库的源并添加它,我想这就是通常所说的坏主意.
我如何正确地将自己的方法添加到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创建的...那么坚持下一步去哪里.
一个解决方案是创建一个新类,从库中扩展一个类 - 然后,使用你的类,它拥有原始类的所有方法,加上你的类.
这是一个(非常快速和简单)的例子:
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)
关于这一点,您可以查看本手册的" 对象继承"部分.
并且,正如您所猜测的那样,修改库肯定是一个坏主意:每次更新库时都必须重新进行修改!
(有一天,你会忘记 - 或者你的一个同事会忘记^^)
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |