bug50285.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. --TEST--
  2. Bug #50285 (xmlrpc does not preserve keys in encoded indexed arrays)
  3. --SKIPIF--
  4. <?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
  5. --FILE--
  6. <?php
  7. function test1($func, $params) {
  8. return array(1=>'One', 3=>'Three', 5=>'Five');
  9. }
  10. function test2($func, $params) {
  11. return array('One', 'Three', 'Five', 5);
  12. }
  13. function test3($func, $params) {
  14. return array('One', 3 => 'Three', b'Five' => 5, 'Six');
  15. }
  16. function test4($func, $params) {
  17. return array('One', 'Three', 'Five', b'Six' => 6);
  18. }
  19. $server = xmlrpc_server_create();
  20. $result = xmlrpc_server_register_method($server, 'test1', 'test1');
  21. $HTTP_RAW_POST_DATA = <<<EOD
  22. <?xml version="1.0" encoding="UTF-8"?>
  23. <methodCall>
  24. <methodName>test1</methodName>
  25. <params />
  26. </methodCall>
  27. EOD;
  28. $response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
  29. var_dump(xmlrpc_decode($response));
  30. // ------------
  31. $server = xmlrpc_server_create();
  32. $result = xmlrpc_server_register_method($server, 'test2', 'test2');
  33. $HTTP_RAW_POST_DATA = <<<EOD
  34. <?xml version="1.0" encoding="UTF-8"?>
  35. <methodCall>
  36. <methodName>test2</methodName>
  37. <params />
  38. </methodCall>
  39. EOD;
  40. $response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
  41. var_dump(xmlrpc_decode($response));
  42. // ------------
  43. $server = xmlrpc_server_create();
  44. $result = xmlrpc_server_register_method($server, 'test3', 'test3');
  45. $HTTP_RAW_POST_DATA = <<<EOD
  46. <?xml version="1.0" encoding="UTF-8"?>
  47. <methodCall>
  48. <methodName>test3</methodName>
  49. <params />
  50. </methodCall>
  51. EOD;
  52. $response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
  53. var_dump(xmlrpc_decode($response));
  54. // ------------
  55. $server = xmlrpc_server_create();
  56. $result = xmlrpc_server_register_method($server, 'test4', 'test4');
  57. $HTTP_RAW_POST_DATA = <<<EOD
  58. <?xml version="1.0" encoding="UTF-8"?>
  59. <methodCall>
  60. <methodName>test4</methodName>
  61. <params />
  62. </methodCall>
  63. EOD;
  64. $response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
  65. var_dump(xmlrpc_decode($response));
  66. ?>
  67. --EXPECT--
  68. array(3) {
  69. [1]=>
  70. string(3) "One"
  71. [3]=>
  72. string(5) "Three"
  73. [5]=>
  74. string(4) "Five"
  75. }
  76. array(4) {
  77. [0]=>
  78. string(3) "One"
  79. [1]=>
  80. string(5) "Three"
  81. [2]=>
  82. string(4) "Five"
  83. [3]=>
  84. int(5)
  85. }
  86. array(4) {
  87. [0]=>
  88. string(3) "One"
  89. [3]=>
  90. string(5) "Three"
  91. ["Five"]=>
  92. int(5)
  93. [4]=>
  94. string(3) "Six"
  95. }
  96. array(4) {
  97. [0]=>
  98. string(3) "One"
  99. [1]=>
  100. string(5) "Three"
  101. [2]=>
  102. string(4) "Five"
  103. ["Six"]=>
  104. int(6)
  105. }