所以我正在尝试解决我在设计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