Return-Objekt mit Zend_Soap
-
25-09-2019 - |
Frage
Ich möchte ein Objekt mit Zend_Soap zurückzukehren. Ich mag auch das Objekt in der WSDL-Datei angegeben. Aber ich kann nicht beide zusammen an der Arbeit. Es ist entweder das eine oder das andere.
1. WSDL arbeiten, aber nicht Gegenstand der Rückkehr
Wenn in der phpdoc meiner Funktion auf dem SOAP-Server-Skript, ich schreibe
@return Application_Model_Soap_Test
ich es in der WSDL-Datei sehen
<message name="getPostcodeOut">
<part name="return" type="tns:Application_Model_Soap_Test"/>
</message>
aber wenn ich das Skript ausführen, es gibt eine leere Klasse:
stdClass Object
(
)
2. Holen Objekt, aber falsch WSDL
Wenn ich die phpdoc Info-Server-Funktion der ändern
@return mixed Application_Model_Soap_Test
ich ein Objekt zurück mit Informationen erhalten:
stdClass Object
(
[name] => Fred
[age] => 40
)
aber die WSDL-Datei ist falsch
<message name="getPostcodeOut">
<part name="return" type="xsd:anyType"/>
</message>
Irgendwelche Ideen? Danke.
Lösung
Sie müssen eine 'classmap' Option Variable in dem Client zu übergeben.
Siehe auch http://www.php.net/manual/en/ soapclient.soapclient.php und http://www.php.net /manual/en/soapclient.soapclient.php über die 'classmap' Option in der Option Array übergeben.
Im Prinzip sollte es eine Array Abbildung Ihre Klassen zu den definierten Klassen, wie die zurückgegebenen Objekte in der WSDL-Datei.
Andere Tipps
Haben Sie versucht, das Caching zu deaktivieren?
In PHP, wie können Sie eine WSDL-Cache löschen?
Ich hatte das gleiche Problem. Jede Anfrage Ich habe mich wie ein leeres stdClass zurückgegeben, obwohl die WSDL richtig war. Nach Caching deaktivieren es funktionierte gut für mich. Probieren Sie es aus.