PHP 来自子级的私有变量访问


PHP Private variable access from child

所以我正在尝试解决我在设计PHP类时遇到的一个问题。我创建了一个基类,并分配了私有变量。我有扩展这个基类的子类,它们通过基类的函数对这些私有变量进行引用和更改。这里有一个例子,请记住,我仍然对privateprotected方法/变量之间的区别感到困惑(如果我做错了,请告诉我!

基地.class.php

<?php
class Base {
    private $test;
    public function __construct(){
        require('sub.class.php');
        $sub = new Sub;
        echo($this->getTest());
    }
    public function getTest(){
        return $this->test;
    }
    protected function setTest($value){
        $this->test = $value;
    }
}
?>

子.class.php

<?php
class Sub extends Base {
    public function __construct(){
        parent::setTest('hello!');
    }
}
?>

所以我希望结果hello!打印在屏幕上 - 相反什么都没有。我可能对课程有根本的误解,或者我只是做错了什么。任何指导都非常感谢!谢谢。

编辑:

感谢所有提供答案的人 - 我认为,尽管有很好的解决方案,但子类实际上不是我需要的 - 似乎委托类在这一点上可能更有用,因为我真的不需要从其他类中引用 Base 函数。

应该是这样的:

基数.class.php:

class Base {
    private $test;
    public function __construct() {
        echo $this->getTest();
    }
    public function getTest() {
        return $this->test;
    }
    protected function setTest($value) {
        $this->test = $value;
    }
}

子.class.php:

class Sub extends Base {
    public function __construct() {
        parent::setTest('hello!');  // Or, $this->setTest('hello!');
        parent::__construct();
    }
}

主代码:

require 'base.class.php';
require 'sub.class.php';
$sub = new Sub;  // Will print: hello!