所以我正在尝试解决我在设计 PHP 类时遇到的问题。我创建了一个基类,并分配了私有变量。我有扩展此基类的子类,它们通过基类的函数引用和更改这些私有变量。这是一个例子,请记住我仍然对之间的区别感到困惑private
and protected
方法/变量(如果我做错了,请告诉我!):
基类.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;
}
}
?>
子类.php
<?php
class Sub extends Base {
public function __construct(){
parent::setTest('hello!');
}
}
?>
所以我期望结果是hello!
打印在屏幕上 - 相反,什么也没有。我可能对课程有根本性的误解,或者我只是做错了什么。非常感谢任何指导!谢谢。
EDIT:
感谢每个提供答案的人 - 我认为,尽管有出色的解决方案,但子类实际上并不是我所需要的 - 似乎委托类在这一点上可能更有用,因为我真的不需要引用 Base来自其他类的函数。
应该是这样的:
基类.php:
class Base {
private $test;
public function __construct() {
echo $this->getTest();
}
public function getTest() {
return $this->test;
}
protected function setTest($value) {
$this->test = $value;
}
}
子类.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!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)