bug74478.phpt 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. --TEST--
  2. Bug #74478: null coalescing operator failing with SplFixedArray
  3. --FILE--
  4. <?php
  5. class MyFixedArray extends \SplFixedArray
  6. {
  7. public function offsetExists($name): bool {
  8. echo "offsetExists($name)\n";
  9. return parent::offsetExists($name);
  10. }
  11. public function offsetGet($name): mixed {
  12. echo "offsetGet($name)\n";
  13. return parent::offsetGet($name);
  14. }
  15. public function offsetSet($name, $value): void {
  16. echo "offsetSet($name)\n";
  17. parent::offsetSet($name, $value);
  18. }
  19. public function offsetUnset($name): void {
  20. echo "offsetUnset($name)\n";
  21. parent::offsetUnset($name);
  22. }
  23. }
  24. $fixedData = new MyFixedArray(10);
  25. var_dump(isset($fixedData[0][1][2]));
  26. var_dump(isset($fixedData[0]->foo));
  27. var_dump($fixedData[0] ?? 42);
  28. var_dump($fixedData[0][1][2] ?? 42);
  29. $fixedData[0] = new MyFixedArray(10);
  30. $fixedData[0][1] = new MyFixedArray(10);
  31. var_dump(isset($fixedData[0][1][2]));
  32. var_dump($fixedData[0][1][2] ?? 42);
  33. ?>
  34. --EXPECT--
  35. offsetExists(0)
  36. bool(false)
  37. offsetExists(0)
  38. bool(false)
  39. offsetExists(0)
  40. int(42)
  41. offsetExists(0)
  42. int(42)
  43. offsetSet(0)
  44. offsetGet(0)
  45. offsetSet(1)
  46. offsetExists(0)
  47. offsetGet(0)
  48. offsetExists(1)
  49. offsetGet(1)
  50. offsetExists(2)
  51. bool(false)
  52. offsetExists(0)
  53. offsetGet(0)
  54. offsetExists(1)
  55. offsetGet(1)
  56. offsetExists(2)
  57. int(42)