微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

所以我正在尝试解决我在设计PHP类时遇到的问题.我已经创建了一个基类,并分配了私有变量.我有扩展这个基类的子类,它通过基类的函数对这些私有变量进行引用和更改.这是一个例子,请记住我仍然对私有和受保护的方法/变量之间的区别感到困惑(让我知道我做错了!):

base.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;
    }
}
?>

sub.class.PHP

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

所以我希望结果是你好!印在屏幕上 – 而不是什么都没有.我可能会对课程产生根本性的误解,或者我可能只是做错了什么.非常感谢任何指导!谢谢.

编辑:

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

解决方法:

应该是这样的:

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;
    }
}

sub.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!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐