Вы должны вызвать конструктор родительского класса из конструктора дочернего класса.
Что означает, в вашем случае, что ваш класс test2
станет:
class test2 extends test
{
function __construct()
{
parent::__construct();
echo $this->testvar;
}
}
Для получения дополнительной информации вы можете взглянуть на страницу Конструкторы и деструкторы руководства, в котором говорится о вашем вопросе:
Примечание: Родительские конструкторы не являются
вызывается неявно, если дочерний класс
определяет конструктор . Для того, чтобы бежать
родительский конструктор, вызов
parent::__construct()
в пределах
требуется дочерний конструктор.
Вы можете использовать $this->varName
: это не проблема; рассмотрите этот код:
class test {
public $testvar = 2;
function __construct() {
$this->testvar = 1;
}
}
class test2 extends test {
function __construct() {
var_dump($this->testvar);
}
}
$test2 = new test2;
Вывод:
int 2
Что является значением по умолчанию $testvar
.
Это означает, что проблема не в том, что вы не можете получить доступ к этому свойству: проблема здесь только в том, что конструктор родительского класса не был вызван.