12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- --TEST--
- Bug #71359: Null coalescing operator and magic
- --FILE--
- <?php
- class AA {
- private $data = [];
- public function __isset($name) {
- echo "__isset($name)\n";
- return array_key_exists($name, $this->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)
|