>好的,我有 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 类中重载了方法 say() ...... 但我在这里想要的是合并这两个方法而不是相互覆盖。 我想要的输出是这个
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
的 say 方法自动调用。
这称为模板方法模式
旧答案
只需将parent::say();
添加到重载方法中:
class B extends A{
public function say(){
parent::say();
echo "hi<br>";
}
}
这告诉 php 执行重载方法。如果你不希望扩展类来重载它的方法,你可以将它们声明为 final。
另请参阅有关扩展类的 php 手册。