File tree Expand file tree Collapse file tree 1 file changed +61
-0
lines changed Expand file tree Collapse file tree 1 file changed +61
-0
lines changed Original file line number Diff line number Diff line change
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)
You can’t perform that action at this time.
0 commit comments