如果我有一个由很多很多其他类扩展的父类,并且我想确保父类的构造函数总是运行,那么声明构造函数final是不是一个坏主意?
我在考虑做这样的事情:
class ParentClass {
public final function __construct() {
//parent class initialization...
$this->construct();
}
protected function init() {
echo 'constructing<br>';
}
}
class ChildClass extends ParentClass {
protected function init() {
//child class initialization
echo 'constructing child<br>';
}
}
这样子类可以有一个排序构造函数,父类的构造函数将始终执行.这是不好的做法吗?
声明一个最终的__construct确保没有任何扩展您的类的人可以实现具有相同名称的方法.从表面上看,这似乎意味着没有其他人可以为这个类的子类声明构造函数,但事实并非如此,因为Class4()的PHP 4样式仍然可以作为替代使用构造函数的名称.实际上,将构造函数声明为final可以在PHP中找不到任何东西.