2014-01-23 4 views
-2
class example 
{ 

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

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

} 

НоКак получить все свойства не-объекта класса в PHP?

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

Как я могу получить все свойства, которые не являются объектами?

UPDATE:

Для тех, кто проголосовал вниз, я имел в виду рекурсивно!

Как я могу рекурсивно получить все свойства example и MyObject? я намерен написать код, чтобы найти разницу между двумя объектами PHP.

+0

'array_filter' результат. – Wrikken

ответ

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

И рекурсивный алгоритм

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)); 
0
foreach(get_object_vars($example) as $prop){ 
    if(!is_object($prop)){ 
     echo $prop; 
    } 
} 
0
$props = get_object_vars($example); 
$nonObjProps = array(); 
foreach($props as $prop) 
{ 
    if (is_object($prop)) 
    { 
     continue; 
    } 
    $nonObjProps = $prop; 
} 
Смежные вопросы