这实际上来自一个特定的WordPress问题,但它背后有一个更普遍的PHP点,我有兴趣知道答案。
WordPress类就是这样的:
class Tribe_Image_Widget extends WP_Widget {
function example_function(){
// do something useful
}
}
在PHP中有什么方法可以从类外部替换example_function()
吗?
我想这样做的原因是该类来自其他人的WP插件(并且在该类中有几个函数),我想继续接收插件的更新,但我希望其中一个功能适应。如果我更改插件,那么每次我都会丢失所有更改。所以,如果我有自己的插件,只是改变了一个功能,我就避免了这个问题。
答案 0 :(得分:9)
听起来你想做的就是extend
这个类,并覆盖那个特定的函数。
Class Your_Tribe_Image_Widget extends Tribe_Image_Widget
{
function example_function() {
// Call the base class functionality
// If necessary...
parent::example_function();
// Do something else useful
}
}
答案 1 :(得分:1)
你可能可能在文件顶部有一个include_once到目标插件,然后扩展目标插件的类而不是WP_Widget类:
include_once otherPlugin.php
class My_Awesome_Plugin_Overloaded extends Someone_Elses_Awesome_Plugin{
function example_function(){
return 'woot';
}
}
答案 2 :(得分:1)
只要现有类中的方法没有被标记为final,您就可以将其子类化并覆盖它
class My_Tribe_Image_Widget extends Tribe_Image_Widget {
//override this method
function example_function(){
// do something useful
}
}