好吧,我有2个班
class A{
public function say(){
echo "hello<br>";
}
}
class B extends A{
public function say(){
echo "hi<br>";
}
}
$haha = new B();
$haha->say();
还有你看我重载类B中的方法,说()...但我想在这里什么是两种方法合并,而不是相互覆盖。 我期望的输出我想是这样的
hello<br>
hi<br>
这可能吗?
注:如果我的条件是错误的,请教我正确的条款。 我真的很新的PHP OOP
编辑:根据您的意见,你想是这样的:
class A{
final public function say(){
echo "hello<br>";
$this->_say();
}
public function _say(){
//By default, do nothing
}
}
class B extends A{
public function _say(){
echo "Hi<br>";
}
}
我已要求新功能_say
,但你可以给它任何你想要的名称。 这样一来,你的队友只是定义一个方法叫做_say(),它会自动通过类调用A
我们说的方法。
这就是所谓的模板方法模式
老答案
只需添加parent::say();
到过载方法:
class B extends A{
public function say(){
parent::say();
echo "hi<br>";
}
}
这将告诉PHP执行重载方法。 如果你不希望扩展类重载它的方法,你可以声明他们最后 。
参阅关于PHP手册扩展类。
文章来源: PHP Inheritance between class methods without overloading it, just merge it