class B extends A { public $y; } function f($a) { return $a; } class LocalSoapClient extends SoapClient { function __construct($wsdl, $options) { parent::__construct($wsdl, $options); $this->server = new SoapServer($wsdl, $options); $this->server->addFunction("f"); } function __doRequest($request, $location, $action, $version, $one_way = 0) { ob_start(); $this->server->handle($request); $response = ob_get_contents(); ob_end_clean(); return $response; } } $client = new LocalSoapClient(dirname(__FILE__) . "/classmap_extension_crash.wsdl", array('classmap' => array('A' => 'A', 'B' => 'B'))); $b = new B(); $b->x = 1; $b->y = 2; print_r($client->f($b));
public $y; function __construct($a) { parent::__construct($a); $this->y = $a + 1; } } function f() { return new B(5); } class LocalSoapClient extends SoapClient { function __construct($wsdl, $options) { parent::__construct($wsdl, $options); $this->server = new SoapServer($wsdl, $options); $this->server->addFunction("f"); } function __doRequest($request, $location, $action, $version, $one_way = 0) { ob_start(); $this->server->handle($request); $response = ob_get_contents(); ob_end_clean(); return $response; } } $client = new LocalSoapClient(dirname(__FILE__) . "/classmap003.wsdl", array('classmap' => array('A' => 'A', 'B' => 'B'))); print_r($client->f());