Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je me demandais comment fonctionne le classmap de Zend_Soap_Server.
coté serveur :
<?php require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); if (isset($_GET['wsdl'])) { $server = new Zend_Soap_AutoDiscover(); } else { $server = new Zend_Soap_Server('http://localhost/soapserver.php?wsdl'); $server->setClassmap(array('barStruct' => 'MyClass_ComplexType_Bar')); } $server->setClass('MyClass_Soap_Server'); $server->handle(); class MyClass_Soap_Server { /** * @return MyClass_ComplexType_Bar */ public function hello() { $bar = new MyClass_ComplexType_Bar(); $bar->foo = 'abcde'; return $bar; } /** * @param MyClass_ComplexType_Bar $struct * @return array */ public function testClassmap($struct) { return array(get_class($struct), $struct->foo); } } class MyClass_ComplexType_Bar { /** * @var string */ public $foo; }
côté client :
ini_set('soap.wsdl_cache_enabled', 0); require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); $wsdl = 'http://localhost/soapserver.php?wsdl'; $client = new Zend_Soap_Client($wsdl); $client->setClassmap(array('myStruct' => 'Class_Struct')); $result = $client->hello(); echo 'type: ' . get_class($result) . PHP_EOL; echo 'content: ' . $result->foo . PHP_EOL; $result->foo = 'newValue'; print_r($client->testClassmap($result)); class Class_Struct { public $foo; }
merci.
Hors ligne