gpt4 book ai didi

PHP父函数无法看到子类成员

转载 作者:可可西里 更新时间:2023-11-01 13:48:12 24 4
gpt4 key购买 nike

我想让我的抽象父类有一个方法,该方法将由子类继承,该方法允许该子类遍历它的所有变量(从父类继承的变量和它自己的变量)。

目前如果我在父级中实现这个方法,那么只有父级的变量会被迭代:

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


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

另一方面,如果我将 assignToMembers 函数放在子类中,则只会迭代子类的成员。

因为我希望我的 assignToMembers() 函数可以被许多子类使用,所以我不想在每个子类中只在父类中实现它,但它看起来除非它可以访问该类的成员,否则我将不得不这样做。

有什么办法可以实现吗?

提前致谢。

最佳答案

如果你想让你的代码按照描述的那样工作,你需要使用protected。记住访问/可见性修饰符的作用:

  • private - 仅类级别访问
  • protected - 整个继承链访问
  • public - 普遍访问

关于PHP父函数无法看到子类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com