是否可以动态发现PHP对象的属性?我有一个对象我想剥离并将其作为一个完全填充的stdClass对象返回,因此我需要摆脱输入中使用的一些sublevel - internal - objecttypes。
我的猜测是我需要它是递归的,因为source-object中对象的属性可以包含对象,等等。
有什么建议,我有点卡住?我试过摆弄反射类,get_object_vars并将对象转换为数组。一切都没有成功,说实话。
答案 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);