bug70321.phpt 896 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. --TEST--
  2. bug #70321 (Magic getter breaks reference to array property)
  3. --FILE--
  4. <?php
  5. class foo implements arrayAccess
  6. {
  7. private $bar;
  8. public function __construct()
  9. {
  10. $this->bar = new bar();
  11. }
  12. public function & __get($key)
  13. {
  14. $bar = $this->bar;
  15. return $bar;
  16. }
  17. public function & offsetGet($key): mixed {
  18. $bar = $this->bar;
  19. return $bar;
  20. }
  21. public function offsetSet($key, $val): void {
  22. }
  23. public function offsetUnset($key): void {
  24. }
  25. public function offsetExists($key): bool {
  26. }
  27. }
  28. class bar { public $onBaz = []; }
  29. $foo = new foo();
  30. $foo->bar->onBaz[] = function() {};
  31. var_dump($foo->bar->onBaz);
  32. $foo = new foo();
  33. $foo["bar"]->onBaz[] = function() {};
  34. var_dump($foo->bar->onBaz);
  35. ?>
  36. --EXPECTF--
  37. array(1) {
  38. [0]=>
  39. object(Closure)#%d (0) {
  40. }
  41. }
  42. array(1) {
  43. [0]=>
  44. object(Closure)#%d (0) {
  45. }
  46. }