从stdClass对象创建PHP SOAP消息

时间:2014-01-29 12:20:58

标签: php oop soap

所以我有肥皂连接到一些服务。我正在创建的应用程序是完全面向对象的。因此,我发送的消息的数据在stdClass对象中是PHP(它由我的类扩展 - 在未来的xml文档中使用预先声明的公共$变量表示数据)。只要我必须创建像:

这样的文档,一切都很好
<Request>
<paramsList>
<someParam></someParam>
<someParam></someParam>
<someParam></someParam>
<someParam></someParam>
</paramsList>
<moreData></moreData>
</Request>

现在的问题是创建如下结构:

<Request>
<paramsList>
<someParam id="3"></someParam>
<someParam id="4"></someParam>
<someParam id="18"></someParam>
<someParam id="512"></someParam>
</paramsList>
<moreData isImportant="false"></moreData>
</Request>

是否有可能(以及 - 如何?)将这些内容添加到stdObject中,因此我不必从这个简单的表单中更改SOAP函数的执行:

$client->functionToExecute($stdObjectOrientedData);

示例对象和用法:

class Request extends \stdClass
{
    public $paramsList;
    public $moreData;
}

$objectToSend = new \stdObject();
$request = new Request();
$request->paramsList = $someParamsObjectsArray;
$request->moreData = $someData;
$objectToSend->Request = $request;

$client->functionToExecute($objectToSend);

1 个答案:

答案 0 :(得分:0)

如果有人访问此问题,可以回答这个问题。

如果正确创建了WSDL文件,PHP将使用普通的StdClass对象生成响应。只需命名属性,因为它们在请求中命名。

如果WSDL有错误,那么你唯一能做的就是从模板中手动发出请求。