Возьмите этот пример:
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
Происходя из среды C#, я ожидаю, что вывод будет
Основа __ конструкция
Ребенок __ конструкция
Однако эффективная выходная мощность справедлива
Ребенок __ конструкция
Если Вам нужно то же поведение как C#, который является родительским конструктором, всегда выполняется перед дочерним конструктором Вы могли создать поддельный класс конструктора для своих дочерних классов и объявить это как абстрактную функцию в Вашем абстрактном родительском классе.
, Например,
abstract class Test{
abstract public function __childconstruct();
public function __construct(){
echo "SOME CODE".PHP_EOL;
$this->__childconstruct();
}
}
class TestExtended extends Test{
public function __childconstruct(){
echo "SOME OTHER CODE FROM EXTENDED CLASS".PHP_EOL;
}
}
$a = new TestExtended();
/* SOME CODE
SOME OTHER CODE FROM EXTENDED CLASS */