0

我有一个 Soap WebService,它返回具有不同属性的 StdClass 对象。我想做的是创建一个模拟 WebService 返回的 StdClass 的 Mock 对象。我不想做的是手动创建模拟对象。我不想序列化、反序列化对象,因为我可能想在 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";

你会怎么做?

4

1 回答 1

1

快速构建 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

看起来这就是你要找的东西。

有关更多示例和变体,另请参阅将数组转换为对象 PHP 。

于 2013-04-25T15:27:04.510 回答