如何在PHP中获取类的非继承非静态属性?

时间:2019-03-26 11:29:08

标签: php

假设我有两个班级:

class ParentClass
{

    public $foo;

}

class ChildClass extends ParentClass
{

    public $bar;

    public static $foobar;

}

如何从ChildClass中获取非继承的,非静态的财产名称?所以在这种情况下,只有 bar

1 个答案:

答案 0 :(得分:1)

Reflection API将帮助您将一个类的所有属性作为数组获取,接下来,您必须过滤该数组:

$foo = new ChildClass();

$reflect = new ReflectionClass($foo);
$props = $reflect->getProperties();

foreach ($props as $prop) {
    if (!$prop->isStatic() && $prop->getDeclaringClass()->getName() === 'ChildClass') {
        echo $prop->getName() . PHP_EOL;
    }
}