如何查找所有非静态类属性

时间:2010-10-04 14:27:29

标签: php oop

我希望从类中获取所有非静态类变量。我遇到的问题是“非静态”部分。以下内容:

foreach(array_keys(get_class_vars(get_called_class())) AS $key) {
    echo $key;
}

如何找出$ key是静态属性还是非静态属性。我知道我可以尝试类似的东西:

@$this->$key

但必须有更好的方法来检查这一点。

任何人

2 个答案:

答案 0 :(得分:4)

此代码是我的解决方案。

$ReflectionClass = new \ReflectionClass(get_called_class());

$staticAttributes = $ReflectionClass->getStaticProperties();
$allAttributes = $ReflectionClass->getProperties();

$attributes = array_diff($staticAttributes, $allAttributes);

答案 1 :(得分:1)

class testClass
{
    private static $staticValPrivate;

    protected static $staticValProtected;

    public static $staticValPublic;

    private $valPrivate;

    protected $valProtected;

    public $valPublic;

    public function getClassProperties()
    {
        return get_class_vars(__CLASS__);
    }

    public function getAllProperties()
    {
        return get_object_vars($this);
    }

}

$x = new testClass();

var_dump($x->getClassProperties());
echo '<br />';

var_dump($x->getAllProperties());
echo '<br />';

var_dump(array_diff_key($x->getClassProperties(),$x->getAllProperties()));