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

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

base.class.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

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!

标签:php,class,oop,private,protected

来源: https://codeday.me/bug/20191008/1870715.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值