我希望我的抽象父类有一个子类继承的方法,该子类允许该子类遍历所有变量(从父项继承的变量,以及它自己的变量).
目前,如果我在父级中实现此方法,那么只会迭代父级的变量:
class MyObject {
private $one;
private $two;
private $three;
function assignToMembers() {
$xx = 1;
foreach($this as $key => $value) {
echo "key: ".$key."<br />";
$this->$key = $xx;
$xx++;
}
}
public function getOne() {
return $this->one;
}
public function getTwo() {
return $this->two;
}
public function getThree() {
return $this->three;
}
}
Run Code Online (Sandbox Code Playgroud)
class MyObjectSubclass extends MyObject {
private $four;
private $five;
public function getFour() {
return $this->four;
}
public function getFive() {
return $this->five;
}
}
$o = new MyObjectSubclass();
$o->assignToMembers();
echo $o->getOne()." ";
echo $o->getTwo()." ";
echo $o->getThree()." ";
echo $o->getFour()." ";
echo $o->getFive()." ";
// This prints 1 2 3
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我将assignToMembers函数放在子类中,那么只迭代子类的成员.
因为我希望我的assignToMembers()函数可以被许多子类使用,所以我不想在每一个子类中实现它,只是在父类中,但它看起来像我必须要除非它可以访问该类的成员.
有没有办法实现这个?
提前致谢.
protected如果您希望代码按所述方式工作,则需要使用。记住访问/可见性修饰符的作用:
private- 仅限班级级别访问protected- 整个继承链访问public- 普遍访问