diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/soap/tests/classmap004.phpt | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/soap/tests/classmap004.phpt')
-rw-r--r-- | ext/soap/tests/classmap004.phpt | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/ext/soap/tests/classmap004.phpt b/ext/soap/tests/classmap004.phpt new file mode 100644 index 0000000..e8bf58a --- /dev/null +++ b/ext/soap/tests/classmap004.phpt @@ -0,0 +1,66 @@ +--TEST-- +SOAP Classmap 4: encoding of objects with __get() +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +ini_set("soap.wsdl_cache_enabled",0); + +class A { + public $a; + function __construct($a){ + $this->x = $a; + } + function __get($name) { + return @$this->a[$name]; + } + function __set($name, $val) { + $this->a[$name] = $val; + } + function __unset($name) { + unset($this->a[$name]); + } +} + +class B extends A { + 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()); +?> +--EXPECT-- +B Object +( + [a] => Array + ( + [x] => 5 + [y] => 6 + ) + +) |