- __construct是PHP类中的构造函数,_initialize是ThinkPHP中的初始化方法。
- 子类被实例化时,如果父类子类都有构造函数,调用父类的构造函数需要parent::_construct。
- 如果仅仅父类有构造函数,则会自动触发父类的构造函数,父类的构造函数会判断子类有没有_initialize函数,有则执行此函数。
- 所以ThinkPHP的子类用_initialize方法来执行子类实例化时的初始化操作,这样写就省略了在使用__construct函数时需要加上parent::__construct这句话。
- 如果子类没有调用parent::__construct这句话,会让父类中的__construct中判断_initialize是否存在 之前的代码不执行。
- 看下面代码,你就明白了。
public function __construct() {
tag('action_begin',$this->config);
$this->view = Think::instance('View');
if(method_exists($this,'_initialize'))
$this->_initialize();
}