fixedarray_003.phpt 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. --TEST--
  2. SPL: FixedArray: Non integer offset handling
  3. --FILE--
  4. <?php
  5. $o = new SplFixedArray(10);
  6. $r = fopen('php://memory', 'r+');
  7. echo 'Write context', \PHP_EOL;
  8. $o[false] = 'a';
  9. $o[true] = 'b';
  10. $o[2.5] = 'c';
  11. try {
  12. $o[[]] = 'd';
  13. } catch (\TypeError $e) {
  14. echo $e->getMessage(), "\n";
  15. }
  16. try {
  17. $o[new stdClass()] = 'e';
  18. } catch (\TypeError $e) {
  19. echo $e->getMessage(), "\n";
  20. }
  21. try {
  22. $o[$r] = 'f';
  23. } catch (\TypeError $e) {
  24. echo $e->getMessage(), "\n";
  25. }
  26. $o['3'] = 'g';
  27. try {
  28. $o['3.5'] = 'h';
  29. } catch (\TypeError $e) {
  30. echo $e->getMessage(), "\n";
  31. }
  32. try {
  33. $o['03'] = 'i';
  34. } catch (\TypeError $e) {
  35. echo $e->getMessage(), "\n";
  36. }
  37. try {
  38. $o[' 3'] = 'j';
  39. } catch (\TypeError $e) {
  40. echo $e->getMessage(), "\n";
  41. }
  42. echo 'Read context', \PHP_EOL;
  43. var_dump($o[false]);
  44. var_dump($o[true]);
  45. var_dump($o[2.5]);
  46. try {
  47. var_dump($o[[]]);
  48. } catch (\TypeError $e) {
  49. echo $e->getMessage(), "\n";
  50. }
  51. try {
  52. var_dump($o[new stdClass()]);
  53. } catch (\TypeError $e) {
  54. echo $e->getMessage(), "\n";
  55. }
  56. try {
  57. var_dump($o[$r]);
  58. } catch (\TypeError $e) {
  59. echo $e->getMessage(), "\n";
  60. }
  61. var_dump($o['3']);
  62. try {
  63. var_dump($o['3.5']);
  64. } catch (\TypeError $e) {
  65. echo $e->getMessage(), "\n";
  66. }
  67. try {
  68. var_dump($o['03']);
  69. } catch (\TypeError $e) {
  70. echo $e->getMessage(), "\n";
  71. }
  72. try {
  73. var_dump($o[' 3']);
  74. } catch (\TypeError $e) {
  75. echo $e->getMessage(), "\n";
  76. }
  77. echo 'isset()', \PHP_EOL;
  78. var_dump(isset($o[false]));
  79. var_dump(isset($o[true]));
  80. var_dump(isset($o[2.5]));
  81. try {
  82. var_dump(isset($o[[]]));
  83. } catch (\TypeError $e) {
  84. echo $e->getMessage(), "\n";
  85. }
  86. try {
  87. var_dump(isset($o[new stdClass()]));
  88. } catch (\TypeError $e) {
  89. echo $e->getMessage(), "\n";
  90. }
  91. try {
  92. var_dump(isset($o[$r]));
  93. } catch (\TypeError $e) {
  94. echo $e->getMessage(), "\n";
  95. }
  96. var_dump(isset($o['3']));
  97. try {
  98. var_dump(isset($o['3.5']));
  99. } catch (\TypeError $e) {
  100. echo $e->getMessage(), "\n";
  101. }
  102. try {
  103. var_dump(isset($o['03']));
  104. } catch (\TypeError $e) {
  105. echo $e->getMessage(), "\n";
  106. }
  107. try {
  108. var_dump(isset($o[' 3']));
  109. } catch (\TypeError $e) {
  110. echo $e->getMessage(), "\n";
  111. }
  112. echo 'empty()', \PHP_EOL;
  113. var_dump(empty($o[false]));
  114. var_dump(empty($o[true]));
  115. var_dump(empty($o[2.5]));
  116. try {
  117. var_dump(empty($o[[]]));
  118. } catch (\TypeError $e) {
  119. echo $e->getMessage(), "\n";
  120. }
  121. try {
  122. var_dump(empty($o[new stdClass()]));
  123. } catch (\TypeError $e) {
  124. echo $e->getMessage(), "\n";
  125. }
  126. try {
  127. var_dump(empty($o[$r]));
  128. } catch (\TypeError $e) {
  129. echo $e->getMessage(), "\n";
  130. }
  131. var_dump(empty($o['3']));
  132. try {
  133. var_dump(empty($o['3.5']));
  134. } catch (\TypeError $e) {
  135. echo $e->getMessage(), "\n";
  136. }
  137. try {
  138. var_dump(empty($o['03']));
  139. } catch (\TypeError $e) {
  140. echo $e->getMessage(), "\n";
  141. }
  142. try {
  143. var_dump(empty($o[' 3']));
  144. } catch (\TypeError $e) {
  145. echo $e->getMessage(), "\n";
  146. }
  147. ?>
  148. --EXPECTF--
  149. Write context
  150. Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
  151. Illegal offset type
  152. Illegal offset type
  153. Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
  154. Illegal offset type
  155. Illegal offset type
  156. Illegal offset type
  157. Read context
  158. string(1) "a"
  159. string(1) "b"
  160. Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
  161. string(1) "c"
  162. Illegal offset type
  163. Illegal offset type
  164. Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
  165. string(1) "f"
  166. string(1) "g"
  167. Illegal offset type
  168. Illegal offset type
  169. Illegal offset type
  170. isset()
  171. bool(true)
  172. bool(true)
  173. Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
  174. bool(true)
  175. Illegal offset type
  176. Illegal offset type
  177. Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
  178. bool(true)
  179. bool(true)
  180. Illegal offset type
  181. Illegal offset type
  182. Illegal offset type
  183. empty()
  184. bool(false)
  185. bool(false)
  186. Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
  187. bool(false)
  188. Illegal offset type
  189. Illegal offset type
  190. Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
  191. bool(false)
  192. bool(false)
  193. Illegal offset type
  194. Illegal offset type
  195. Illegal offset type