PHP - 获取类公共变量?

Jas*_*onS 1 php oop

请考虑以下代码.

class A {
  public function __construct() {

  }
}

class B extends A {
  public $a = "a";
  public $b = "b";
  public $c = "c";
}
Run Code Online (Sandbox Code Playgroud)

如何从父类中获取B类的公共变量而不确切知道它们是什么?

Wri*_*ken 8

class A {
   public $d;
   public function __construct() {
      $reflect = new ReflectionClass($this);
      $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);
      var_dump($props);
   }
}

class B extends A {
  public $a = "a";
  private $b = "b";
  public $c = "c";
}
new B();
Run Code Online (Sandbox Code Playgroud)

输出(注意没有'b',但A的公共'd'在那里,提到它在A中声明):

array(3) {
  [0]=>
  &object(ReflectionProperty)#3 (2) {
    ["name"]=>
    string(1) "a"
    ["class"]=>
    string(1) "B"
  }
  [1]=>
  &object(ReflectionProperty)#4 (2) {
    ["name"]=>
    string(1) "c"
    ["class"]=>
    string(1) "B"
  }
  [2]=>
  &object(ReflectionProperty)#5 (2) {
    ["name"]=>
    string(1) "d"
    ["class"]=>
    string(1) "A"
  }
}
Run Code Online (Sandbox Code Playgroud)