先上代码,非常简单。
class Controller {
public function __construct() {
if (method_exists($this, '_initialize')) {
$this->_initialize();
}
}
// 父类的_initialize,我不会被执行到
public function _initialize() {
echo "I am executed by myself";
}
}
Class BaseController extends Controller {
public function __construct() {
parent::__construct();
}
// 子类的_initialize
public function _initialize() {
echo "I am executed by parent";
}
}
这里有两个疑问:
父类怎么可以调用子类的方法,好奇怪啊。
父类里的构造方法调用
_initialize
怎么调用的是子类的方法,为什么。
可以的,你的2个问题归结到一个原因,就是父类的__construct里,使用的$this实际上是子类对象,而不是父类对象。