如何在PHP中获取类的所有非对象属性?

时间:2014-01-23 21:23:51

标签: php oop

class example
{

    public $one;
    public $two;
    public $object;

    public function __construct()
    {
        $this->object = new MyObject();
    }

}

但是

$example = new example();
var_dump(get_object_vars($example)); // returns $one,$two,$object

如何获取非对象的所有属性?

更新

对于那些投票的人,我的意思是递归!

如何递归获取exampleMyObject的所有属性?我的目的是编写一个代码来查找两个PHP对象之间的区别。

3 个答案:

答案 0 :(得分:1)

$properties = array_keys(array_filter(get_object_vars($example), function($element) {
    return !is_object($element);
}));

AND递归算法

function getMyObjectVars($obj) {
    $properties = array();
    foreach (get_object_vars($obj) as $k => $v) {
        if (is_object($v)) {
            $properties = array_merge($properties, getMyObjectVars($v));
        } else {
            $properties[] = $k;

        }
    }
    return $properties;
}

print_r(getMyObjectVars($example));

答案 1 :(得分:0)

foreach(get_object_vars($example) as $prop){
     if(!is_object($prop)){
        echo $prop;
     }
}

答案 2 :(得分:0)

$props = get_object_vars($example);
$nonObjProps = array();
foreach($props as $prop)
{
    if (is_object($prop))
    {
        continue;
    }
    $nonObjProps = $prop;
}