I have the following. Currently it doesn’t output anything for “$this->aa”. I want to be able to inherit the class, set some variables, then call the parent class functions to act on it. Am I going about this the wrong way?
class A {
    private $aa;
    function __construct() {
       $this->aa = "class a";
    }
    function parentmethod() {
       echo '['.$this->aa.']';
    }
}
class B extends A {
    function __construct() {
        $this->aa = "class b";
    }
}
$test = new B();
$test->parentmethod();
Advertisement
Answer
The problem here is the visibility of $aa. https://www.php.net/manual/en/language.oop5.visibility.php
private $aa make $aa only visible for class A
When you try to access $aa in B, you are dynamically creating a new property to B.
For the property to be visible by child, you need to change the visibility to “protected” in A.