--TEST-- Bug #71359: Null coalescing operator and magic --FILE-- data); } public function &__get($name) { echo "__get($name)\n"; if (!array_key_exists($name, $this->data)) { throw new Exception('Unknown offset'); } return $this->data[$name]; } public function __set($name, $value) { echo "__set($name)\n"; $this->data[$name] = $value; } public function __unset($name) { echo "__unset($name)\n"; unset($this->data[$name]); } } $aa = new AA; var_dump(isset($aa->zero->one->two)); var_dump(isset($aa->zero->foo)); var_dump($aa->zero ?? 42); var_dump($aa->zero->one->two ?? 42); $aa->zero = new AA; $aa->zero->one = new AA; var_dump(isset($aa->zero->one->two)); var_dump($aa->zero->one->two ?? 42); ?> --EXPECT-- __isset(zero) bool(false) __isset(zero) bool(false) __isset(zero) int(42) __isset(zero) int(42) __set(zero) __get(zero) __set(one) __isset(zero) __get(zero) __isset(one) __get(one) __isset(two) bool(false) __isset(zero) __get(zero) __isset(one) __get(one) __isset(two) int(42)