我有一个这样的课程
abstract class theme{
abstract function header(){
// do stuff here
}
abstract function footer(){
// do stuff here
}
}
所以所有子类都必须有这两种方法:
class Atheme extends theme{
function header(){
// do stuff here
echo ..
}
function footer(){
// do stuff here
echo ..
}
}
现在,当我调用其中一种方法时:
$atheme = new Atheme;
$atheme->header();
我希望子类中的header()方法自动调用父类的header()方法,而不需要在子类中专门调用parent :: header()。
这可能吗?
答案 0 :(得分:4)
如果您只有一个级别的继承,则可以通过执行以下操作来完成此操作:
abstract class theme {
final public function header() {
// do parent class stuff
$this->_header();
}
abstract protected function _header();
// ditto for footer
}
class Atheme extends theme {
protected function _header() {
// do child class stuff
}
}
如果继承链任意长,那么您需要使用callback chain。