动态发现/处理PHP对象

时间:2011-11-29 09:43:37

标签: php

是否可以动态发现PHP对象的属性?我有一个对象我想剥离并将其作为一个完全填充的stdClass对象返回,因此我需要摆脱输入中使用的一些sublevel - internal - objecttypes。

我的猜测是我需要它是递归的,因为source-object中对象的属性可以包含对象,等等。

有什么建议,我有点卡住?我试过摆弄反射类,get_object_vars并将对象转换为数组。一切都没有成功,说实话。

2 个答案:

答案 0 :(得分:1)

您可以使用foreach

遍历对象的(公共)属性
foreach ($object as $property => $value)
 ... // do stuff

如果你在那里遇到另一个对象(if (is_object($value))),你将不得不重复同样的事情。理想情况下,这将发生在递归函数中。

答案 1 :(得分:1)

经过测试,这似乎有效:

<?php

class myobj {private $privatevar = 'private'; public $hello = 'hellooo';}

$obj = (object)array('one' => 1, 'two' => (object)array('sub' => (object)(array('three' => 3, 'obj' => new myobj))));

var_dump($obj);

echo "\n", json_encode($obj), "\n";

$recursive_public_vars = json_decode(json_encode($obj));

var_dump($recursive_public_vars);