2014-01-29 71 views
0

所以我有一些服务的soap连接。我创建的应用程序完全是面向对象的。因此,我要发送的消息的数据是在stdClass对象中的PHP中(它由我的类扩展 - 在将来的xml文档中使用预先声明的公共$变量表示数据的表示形式)。一切都很好,只要我要创建这样的文件:从stdClass对象创建PHP SOAP消息

<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); 

回答

0

如果有人访问这个问题,这里是答案。

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

如果WSDL存​​在错误,则只能通过模板进行手动请求。