我有一个Soap WebService,它返回具有不同属性的StdClass对象。我想要做的是创建一个Mock对象,模拟WebService返回的StdClass。我不想做的是手动创建模拟对象。我不想序列化,反序列化对象,因为我想在VCS中编辑属性值。
所以基本上我需要转变一下:
stdClass Object
(
[paramA] => 1
[paramB] => 2
[paramC] => 3
[paramD] => Array
(
[0] => stdClass Object
(
[paramD1] => 'blabla'
[paramD2] => 'blabla'
进入这个:
$object = new stdClass;
$object -> paramA = 1;
$object -> paramB = 2;
$object -> paramC = 3;
$object -> paramD -> paramD1 = "blabla";
$object -> paramD -> paramD2 = "blabla";
你会怎么做?
答案 0 :(得分:0)
快速构建stdClass对象的一个好方法是将数组转换为对象(在Type Juggling中概述):
$object = (object) array('prop' => 'value');
如图所示,键成为属性名称,值为值:
echo $object->prop; # value
这也可以在彼此内部工作,就像拥有一个子对象数组一样:
$object = (object) array(
'prop' => 'value',
'children' => array(
(object) array('prop' => 'value'),
),
);
这会给你一些类似的东西:
echo $object->children[0]->prop; # value
看起来这就是你要找的东西。
有关更多示例和变体,请参阅Convert Array to Object PHP。