Это не так, как работает наследование. При создании нового объекта Child
все его элементы данных инициализируются со значениями по умолчанию. Когда вы делаете $this->var = ""
в родительском классе, вы устанавливаете элементы данных для объекта $app
, а не для объекта $child
.
Вы можете изменить дочерний класс так, чтобы он включал конструктор, который принимает параметры, и этот конструктор правильно установил бы свои члены данных. Чтобы достичь чего-то похожего на то, что вы хотите, вы можете использовать конструкторы:
<?php
class App {
public $var = "main-class";
public function __construct() {
$this->var = "child-class";
}
public function load() {
$child = new Child;
$child->echo_var();
}
}
class Child extends App {
public function __construct()
{
parent::__construct();
}
public function echo_var() {
echo $this->var;
}
}
$app = new App;
$app->load();