1--TEST-- 2Typed property must cast when used with &__get() 3--FILE-- 4<?php 5 6class Test { 7 public $prop = "42"; 8 public int $val; 9 10 public function &__get($name) { 11 return $this->prop; 12 } 13} 14 15$test = new Test; 16unset($test->val); 17var_dump($test); 18var_dump($val = &$test->val); 19var_dump($test); 20 21$test->prop = "x"; 22var_dump($test, $val); 23 24?> 25--EXPECT-- 26object(Test)#1 (1) { 27 ["prop"]=> 28 string(2) "42" 29 ["val"]=> 30 uninitialized(int) 31} 32int(42) 33object(Test)#1 (1) { 34 ["prop"]=> 35 &int(42) 36 ["val"]=> 37 uninitialized(int) 38} 39object(Test)#1 (1) { 40 ["prop"]=> 41 &string(1) "x" 42 ["val"]=> 43 uninitialized(int) 44} 45string(1) "x" 46