bug62059.phpt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. --TEST--
  2. Bug #62059: ArrayObject and isset are not friends
  3. --FILE--
  4. <?php
  5. class MyArrayObject1 extends ArrayObject {
  6. public function offsetGet($name): mixed {
  7. echo "offsetGet($name)\n";
  8. return parent::offsetGet($name);
  9. }
  10. public function offsetExists($name): bool {
  11. echo "offsetExists($name)\n";
  12. return parent::offsetExists($name);
  13. }
  14. }
  15. class MyArrayObject2 extends ArrayObject {
  16. public function offsetGet($name): mixed {
  17. echo "offsetGet($name)\n";
  18. return parent::offsetGet($name);
  19. }
  20. }
  21. class MyArrayObject3 extends ArrayObject {
  22. public function offsetExists($name): bool {
  23. echo "offsetExists($name)\n";
  24. return parent::offsetExists($name);
  25. }
  26. }
  27. $arr = [1 => [1 => 42]];
  28. $ao = new ArrayObject($arr);
  29. var_dump(isset($ao[0][1]));
  30. var_dump(isset($ao[1][0]));
  31. var_dump(isset($ao[1][1]));
  32. $ao = new MyArrayObject1($arr);
  33. var_dump(isset($ao[0][1]));
  34. var_dump(isset($ao[1][0]));
  35. var_dump(isset($ao[1][1]));
  36. $ao = new MyArrayObject2($arr);
  37. var_dump(isset($ao[0][1]));
  38. var_dump(isset($ao[1][0]));
  39. var_dump(isset($ao[1][1]));
  40. $ao = new MyArrayObject3($arr);
  41. var_dump(isset($ao[0][1]));
  42. var_dump(isset($ao[1][0]));
  43. var_dump(isset($ao[1][1]));
  44. ?>
  45. --EXPECT--
  46. bool(false)
  47. bool(false)
  48. bool(true)
  49. offsetExists(0)
  50. bool(false)
  51. offsetExists(1)
  52. offsetGet(1)
  53. bool(false)
  54. offsetExists(1)
  55. offsetGet(1)
  56. bool(true)
  57. bool(false)
  58. offsetGet(1)
  59. bool(false)
  60. offsetGet(1)
  61. bool(true)
  62. offsetExists(0)
  63. bool(false)
  64. offsetExists(1)
  65. bool(false)
  66. offsetExists(1)
  67. bool(true)