Skip to content

Commit 1a75cd2

Browse files
committed
add test for bug
1 parent 373da7a commit 1a75cd2

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

Zend/tests/bug71359.phpt

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
--TEST--
2+
Bug #71359: Null coalescing operator and magic
3+
--FILE--
4+
<?php
5+
class AA {
6+
private $data = [];
7+
public function __isset($name) {
8+
echo "__isset($name)\n";
9+
return array_key_exists($name, $this->data);
10+
}
11+
public function &__get($name) {
12+
echo "__get($name)\n";
13+
if (!array_key_exists($name, $this->data)) {
14+
throw new Exception('Unknown offset');
15+
}
16+
return $this->data[$name];
17+
}
18+
public function __set($name, $value) {
19+
echo "__set($name)\n";
20+
$this->data[$name] = $value;
21+
}
22+
public function __unset($name) {
23+
echo "__unset($name)\n";
24+
unset($this->data[$name]);
25+
}
26+
}
27+
28+
$aa = new AA;
29+
var_dump(isset($aa->zero->one->two));
30+
var_dump(isset($aa->zero->foo));
31+
var_dump($aa->zero ?? 42);
32+
var_dump($aa->zero->one->two ?? 42);
33+
$aa->zero = new AA;
34+
$aa->zero->one = new AA;
35+
var_dump(isset($aa->zero->one->two));
36+
var_dump($aa->zero->one->two ?? 42);
37+
?>
38+
--EXPECT--
39+
__isset(zero)
40+
bool(false)
41+
__isset(zero)
42+
bool(false)
43+
__isset(zero)
44+
int(42)
45+
__isset(zero)
46+
int(42)
47+
__set(zero)
48+
__get(zero)
49+
__set(one)
50+
__isset(zero)
51+
__get(zero)
52+
__isset(one)
53+
__get(one)
54+
__isset(two)
55+
bool(false)
56+
__isset(zero)
57+
__get(zero)
58+
__isset(one)
59+
__get(one)
60+
__isset(two)
61+
int(42)

0 commit comments

Comments
 (0)