📄 bug30045.phpt
字号:
--TEST--Bug #30045 (Cannot pass big integers (> 2147483647) in SOAP requests)--SKIPIF--<?php if (!extension_loaded('soap')) die('skip soap extension not available'); if (!extension_loaded('simplexml')) die('skip simplexml extension not available');?>--FILE--<?phpfunction foo($type, $num) { return new SoapVar($num, $type);}class LocalSoapClient extends SoapClient { function __construct($wsdl, $options) { parent::__construct($wsdl, $options); $this->server = new SoapServer($wsdl, $options); $this->server->addFunction('foo'); } function __doRequest($request, $location, $action, $version) { $xml = simplexml_load_string($request); echo $xml->children("http://schemas.xmlsoap.org/soap/envelope/")->Body->children("http://test-uri")->children()->param1->asXML(),"\n"; unset($xml); ob_start(); $this->server->handle($request); $response = ob_get_contents(); ob_end_clean(); return $response; }}$soap = new LocalSoapClient(NULL, array("uri"=>"http://test-uri", "location"=>"test://"));function test($type, $num) { global $soap; try { printf(" %0.0f\n ", $num); $ret = $soap->foo($type, new SoapVar($num, $type)); printf(" %0.0f\n", $ret); } catch (SoapFault $ex) { var_dump($ex); }}/*echo "byte\n";//test(XSD_BYTE, -129);test(XSD_BYTE, -128);test(XSD_BYTE, 127);//test(XSD_BYTE, 128);echo "\nshort\n";//test(XSD_SHORT, -32769);test(XSD_SHORT, -32768);test(XSD_SHORT, 32767);//test(XSD_SHORT, 32768);echo "\nint\n";//test(XSD_INT, -2147483649);test(XSD_INT, -2147483648);test(XSD_INT, 2147483647);//test(XSD_INT, 2147483648);echo "\nlong\n";//test(XSD_LONG, -9223372036854775809);test(XSD_LONG, -9223372036854775808);test(XSD_LONG, 9223372036854775807);//test(XSD_LONG, 9223372036854775808);echo "\nunsignedByte\n";//test(XSD_UNSIGNEDBYTE, -1);test(XSD_UNSIGNEDBYTE, 0);test(XSD_UNSIGNEDBYTE, 255);//test(XSD_UNSIGNEDBYTE, 256);echo "\nunsignedShort\n";//test(XSD_UNSIGNEDSHORT, -1);test(XSD_UNSIGNEDSHORT, 0);test(XSD_UNSIGNEDSHORT, 65535);//test(XSD_UNSIGNEDSHORT, 65536);echo "\nunsignedInt\n";//test(XSD_UNSIGNEDINT, -1);test(XSD_UNSIGNEDINT, 0);test(XSD_UNSIGNEDINT, 4294967295);//test(XSD_UNSIGNEDINT, 4294967296);echo "\nunsignedLong\n";//test(XSD_UNSIGNEDLONG, -1);test(XSD_UNSIGNEDLONG, 0);test(XSD_UNSIGNEDLONG, 18446744073709551615);//test(XSD_UNSIGNEDLONG, 18446744073709551616);echo "\nnegativeInteger\n";test(XSD_NEGATIVEINTEGER, -18446744073709551616);test(XSD_NEGATIVEINTEGER, -1);//test(XSD_NEGATIVEINTEGER, 0);echo "\nnonPositiveInteger\n";test(XSD_NONPOSITIVEINTEGER, -18446744073709551616);test(XSD_NONPOSITIVEINTEGER, 0);//test(XSD_NONPOSITIVEINTEGER, 1);echo "\nnonNegativeInteger\n";//test(XSD_NONNEGATIVEINTEGER, -1);test(XSD_NONNEGATIVEINTEGER, 0);test(XSD_NONNEGATIVEINTEGER, 18446744073709551616);echo "\nPositiveInteger\n";//test(XSD_POSITIVEINTEGER, 0);test(XSD_POSITIVEINTEGER, 1);test(XSD_POSITIVEINTEGER, 18446744073709551616);echo "\ninteger\n";test(XSD_INTEGER, -18446744073709551616);test(XSD_INTEGER, 18446744073709551616);*/echo "long\n";test(XSD_LONG, 2147483647);test(XSD_LONG, 2147483648);test(XSD_LONG, 4294967296);test(XSD_LONG, 8589934592);test(XSD_LONG, 17179869184); echo "\nunsignedLong\n";test(XSD_UNSIGNEDLONG, 2147483647);test(XSD_UNSIGNEDLONG, 2147483648);test(XSD_UNSIGNEDLONG, 4294967296);test(XSD_UNSIGNEDLONG, 8589934592);test(XSD_UNSIGNEDLONG, 17179869184);?>--EXPECT--long 2147483647 <param1 xsi:type="xsd:long">2147483647</param1> 2147483647 2147483648 <param1 xsi:type="xsd:long">2147483648</param1> 2147483648 4294967296 <param1 xsi:type="xsd:long">4294967296</param1> 4294967296 8589934592 <param1 xsi:type="xsd:long">8589934592</param1> 8589934592 17179869184 <param1 xsi:type="xsd:long">17179869184</param1> 17179869184unsignedLong 2147483647 <param1 xsi:type="xsd:unsignedLong">2147483647</param1> 2147483647 2147483648 <param1 xsi:type="xsd:unsignedLong">2147483648</param1> 2147483648 4294967296 <param1 xsi:type="xsd:unsignedLong">4294967296</param1> 4294967296 8589934592 <param1 xsi:type="xsd:unsignedLong">8589934592</param1> 8589934592 17179869184 <param1 xsi:type="xsd:unsignedLong">17179869184</param1> 17179869184
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -