我有这段代码:
class A {
var $arr = array();
function __construct($para) {
echo 'Not called';
}
}
class B extends A {
function __construct() {
$arr[] = 'new Item';
}
}
由于B有自己的构造函数construct($para),所以A的构造函数construct($para)从未被调用。
现在我可以调用parent::__construct($para),但这样类B就需要知道类A需要哪些参数。
我更喜欢这种方式:
class A {
var $arr = array();
function __construct($para) {
echo 'Not called';
}
}
class B extends A {
function __construct() {
parent::__construct(); // With the parameters class B was created.
// Additional actions that do not need direct access to the parameters
$arr[] = 'new Item';
}
}
这样的方案可行吗?
我不喜欢这个事实,即所有继承类A的类都需要定义一个新的构造函数,一旦类A更改其参数,而我希望他们像当类B没有使用自己的__construct()方法覆盖它时那样调用类A的构造函数。
eval
,也是 PHP 的弱点之一,还有可变变量等。 - jcsanyi