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

Joe*_*Joe 5 php oop

我希望我的抽象父类有一个子类继承的方法,该子类允许该子类遍历所有变量(从父项继承的变量,以及它自己的变量).

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

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()函数可以被许多子类使用,所以我不想在每一个子类中实现它,只是在父类中,但它看起来像我必须要除非它可以访问该类的成员.

有没有办法实现这个?

提前致谢.

Ali*_*aru 4

protected如果您希望代码按所述方式工作,则需要使用。记住访问/可见性修饰符的作用:

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