mirror of
https://github.com/php/php-src.git
synced 2026-04-24 08:28:26 +02:00
e1b59e9edd
The do_request() function that calls this methods, assumes that a string is being returned from the method otherwise it bails out. However, the default implementation of SoapClient::__doRequest() indicates that it can return null when it fails to set-up and execute the HTTP SOAP request, but this always results in a SoapFault exception being thrown, and thus cannot happen in practice. We need to investigate further if the return type should be changed from ?string to string or not.
56 lines
1014 B
PHP
56 lines
1014 B
PHP
--TEST--
|
|
SOAP Classmap 3: encoding of inherited objects
|
|
--EXTENSIONS--
|
|
soap
|
|
--FILE--
|
|
<?php
|
|
ini_set("soap.wsdl_cache_enabled",0);
|
|
|
|
class A {
|
|
public $x;
|
|
function __construct($a){
|
|
$this->x = $a;
|
|
}
|
|
}
|
|
|
|
class B extends A {
|
|
public $y;
|
|
function __construct($a){
|
|
parent::__construct($a);
|
|
$this->y = $a + 1;
|
|
}
|
|
}
|
|
|
|
function f(){
|
|
return new B(5);
|
|
}
|
|
|
|
class LocalSoapClient extends SoapClient {
|
|
private $server;
|
|
|
|
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): string {
|
|
ob_start();
|
|
$this->server->handle($request);
|
|
$response = ob_get_contents();
|
|
ob_end_clean();
|
|
return $response;
|
|
}
|
|
}
|
|
|
|
$client = new LocalSoapClient(__DIR__."/classmap003.wsdl",
|
|
array('classmap'=>array('A'=>'A','B'=>'B')));
|
|
print_r($client->f());
|
|
?>
|
|
--EXPECT--
|
|
B Object
|
|
(
|
|
[x] => 5
|
|
[y] => 6
|
|
)
|