在我背后默默地调用父方法

时间:2012-02-09 17:32:34

标签: php parent

  

可能重复:
  Enforcing call to parent method

我有一个这样的课程

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()。

这可能吗?

1 个答案:

答案 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