Наследование свойств возможно, когда свойство жестко закодировано. См. Ниже:
class ParentObj {
protected $familyName = 'Lincoln';
}
class ChildObj extends ParentObj {
public function __construct() {
var_dump($this->familyName);
}
}
$childObj = new ChildObj();
// OUTPUT
string 'Lincoln'
Наследование свойств невозможно, если свойство является динамическим c. См. Ниже:
class ParentObj {
protected $familyName;
public function setFamilyName($familyName){
$this->familyName = $familyName;
}
}
class ChildObj extends ParentObj {
public function __construct() {
var_dump($this->familyName);
}
}
$familyName = 'Lincoln';
$parentObj = new ParentObj();
$parentObj->setFamilyName($familyName);
$childObj = new ChildObj();
// OUTPUT
null
Таким образом, вопрос заключается в следующем: почему дочерний класс не может наследовать класс свойств, которые задаются динамически?