Я думаю, это хорошо, что PHP заставляет вас вызывать конструктор родителя вручную, потому что он допускает конструктор потомка, такой как:
public function __construct() {
// set up variables that parent::__construct() requires
$var1 = get_stuff_from_db();
$var2 = get_stuff_from_webservice();
parent::__construct($var1, $var2);
// continue setting up $this var
$this->default = 'Default';
$this->do_some_secret_stuff();
}
Или даже:
public function __construct($param) {
// call differently based on condition
if (is_array($param))
$param['id'] = 0;
parent::__construct($param);
}
else {
parent::__construct($param, 0, TRUE);
}
// continue setting up $this var
$this->default = 'Default';
$this->do_some_secret_stuff();
}
Это означает, что вы можете свободно вызывать родительский конструктор в любом месте дочернего элемента, и вы можете делать вещи до и после вызова. Разве это не особенность?