Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/VGDNn
function name: (null)
number of ops: 17
compiled vars: !0 = $obj, !1 = $tester
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
138 0 E > NEW $2 'DynamicPropInitOnGet'
140 1 SEND_VAL_EX <array>
138 2 DO_FCALL 0
3 ASSIGN !0, $2
146 4 NEW $5 'TestMagicMethods'
5 SEND_VAR_EX !0
6 DO_FCALL 0
7 ASSIGN !1, $5
148 8 ECHO '%2A%2A%2A%2A%2A+Test+the+%27known%27+property+%2A%2A%2A%2A%2A%0A%0A'
149 9 INIT_METHOD_CALL !1, 'test'
10 SEND_VAL_EX 'known'
11 DO_FCALL 0
151 12 ECHO '%0A%0A%2A%2A%2A%2A%2A+Unknown%2C+unexpected+dynamic+property+%2A%2A%2A%2A%2A%0A%0A'
152 13 INIT_METHOD_CALL !1, 'test'
14 SEND_VAL_EX 'unknown'
15 DO_FCALL 0
16 > RETURN 1
Class DynamicPropInitOnGet:
Function __construct:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 2, Position 2 = 7
Branch analysis from position: 2
2 jumps found. (Code = 78) Position 1 = 3, Position 2 = 7
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 2
Branch analysis from position: 2
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
filename: /in/VGDNn
function name: __construct
number of ops: 9
compiled vars: !0 = $props, !1 = $value, !2 = $prop
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
13 0 E > RECV !0
14 1 > FE_RESET_R $3 !0, ->7
2 > > FE_FETCH_R ~4 $3, !1, ->7
3 > ASSIGN !2, ~4
15 4 ASSIGN_OBJ !2
5 OP_DATA !1
14 6 > JMP ->2
7 > FE_FREE $3
17 8 > RETURN null
End of function __construct
Function __get:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 44) Position 1 = 3, Position 2 = 4
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 20
Branch analysis from position: 20
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 4
2 jumps found. (Code = 77) Position 1 = 8, Position 2 = 18
Branch analysis from position: 8
2 jumps found. (Code = 78) Position 1 = 9, Position 2 = 18
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 14
Branch analysis from position: 11
1 jumps found. (Code = 42) Position 1 = 15
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
Branch analysis from position: 18
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 18
filename: /in/VGDNn
function name: __get
number of ops: 21
compiled vars: !0 = $key, !1 = $known, !2 = $column
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
19 0 E > RECV !0
21 1 IS_EQUAL !0, 'known'
2 > JMPNZ ~3, ->4
3 > > JMP ->20
22 4 > NEW $4 'stdClass'
5 DO_FCALL 0
6 ASSIGN !1, $4
23 7 > FE_RESET_R $7 <array>, ->18
8 > > FE_FETCH_R $7, !2, ->18
24 9 > ISSET_ISEMPTY_PROP_OBJ !2
10 > JMPZ ~9, ->14
11 > FETCH_OBJ_R ~10 !2
12 QM_ASSIGN ~11 ~10
13 > JMP ->15
14 > QM_ASSIGN ~11 null
15 > ASSIGN_OBJ !1, !2
16 OP_DATA ~11
23 17 > JMP ->8
18 > FE_FREE $7
27 19 > RETURN !1
29 20 > > RETURN null
End of function __get
End of class DynamicPropInitOnGet.
Class TestMagicMethods:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/VGDNn
function name: __construct
number of ops: 4
compiled vars: !0 = $obj
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
36 0 E > RECV !0
37 1 ASSIGN_OBJ 'obj'
2 OP_DATA !0
38 3 > RETURN null
End of function __construct
Function test:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/VGDNn
function name: test
number of ops: 18
compiled vars: !0 = $prop
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
40 0 E > RECV !0
41 1 IS_IDENTICAL ~2 !0, 'known'
2 ASSIGN_OBJ 'is_known_prop'
3 OP_DATA ~2
45 4 INIT_METHOD_CALL 'test_isset'
5 SEND_VAR_EX !0
6 DO_FCALL 0
48 7 INIT_METHOD_CALL 'test_get'
8 SEND_VAR_EX !0
9 DO_FCALL 0
51 10 INIT_METHOD_CALL 'test_isset'
11 SEND_VAR_EX !0
12 SEND_VAL_EX <true>
13 DO_FCALL 0
54 14 INIT_METHOD_CALL 'test_unset'
15 SEND_VAR_EX !0
16 DO_FCALL 0
55 17 > RETURN null
End of function test
Function test_isset:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 16
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 22, Position 2 = 24
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 24
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/VGDNn
function name: test_isset
number of ops: 36
compiled vars: !0 = $prop, !1 = $after_get, !2 = $actual, !3 = $expected
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
57 0 E > RECV !0
1 RECV_INIT !1 <false>
58 2 FETCH_OBJ_IS ~4 'obj'
3 ISSET_ISEMPTY_PROP_OBJ ~5 ~4, !0
4 ASSIGN !2, ~5
60 5 BOOL_NOT ~7 !1
6 > JMPZ ~7, ->16
61 7 > INIT_FCALL 'printf'
8 SEND_VAL '__isset%28%29+results+should+be+false+%25s%0A'
9 INIT_METHOD_CALL 'test_results'
10 TYPE_CHECK 4 ~8 !2
11 SEND_VAL_EX ~8
12 DO_FCALL 0 $9
13 SEND_VAR $9
14 DO_ICALL
60 15 > JMP ->32
63 16 > FETCH_OBJ_R ~11 'is_known_prop'
17 ASSIGN !3, ~11
64 18 INIT_FCALL 'printf'
65 19 SEND_VAL '%0A%0A__isset%28%29+after+__get%28%29+results+should+be+%25s+%25s%0A'
66 20 FETCH_OBJ_R ~13 'is_known_prop'
21 > JMPZ ~13, ->24
22 > QM_ASSIGN ~14 'true'
23 > JMP ->25
24 > QM_ASSIGN ~14 'false'
25 > SEND_VAL ~14
67 26 INIT_METHOD_CALL 'test_results'
27 IS_EQUAL ~15 !3, !2
28 SEND_VAL_EX ~15
29 DO_FCALL 0 $16
30 SEND_VAR $16
64 31 DO_ICALL
71 32 > INIT_FCALL 'var_dump'
33 SEND_VAR !2
34 DO_ICALL
72 35 > RETURN null
End of function test_isset
Function test_get:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 17
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 26
Branch analysis from position: 26
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 17
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/VGDNn
function name: test_get
number of ops: 30
compiled vars: !0 = $prop, !1 = $actual, !2 = $message
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
74 0 E > RECV !0
75 1 FETCH_OBJ_R ~3 'obj'
2 FETCH_OBJ_R ~4 ~3, !0
3 ASSIGN !1, ~4
76 4 ASSIGN !2, '%0A%0A__get%28%29+results+should+be+%25s+%25s%0A'
77 5 FETCH_OBJ_R ~7 'is_known_prop'
6 > JMPZ ~7, ->17
78 7 > INIT_FCALL 'printf'
8 SEND_VAR !2
9 SEND_VAL 'an+object+with+prop1+and+prop2'
10 INIT_METHOD_CALL 'test_results'
11 INSTANCEOF ~8 !1, 'stdClass'
12 SEND_VAL_EX ~8
13 DO_FCALL 0 $9
14 SEND_VAR $9
15 DO_ICALL
77 16 > JMP ->26
80 17 > INIT_FCALL 'printf'
18 SEND_VAR !2
19 SEND_VAL 'null'
20 INIT_METHOD_CALL 'test_results'
21 TYPE_CHECK 2 ~11 !1
22 SEND_VAL_EX ~11
23 DO_FCALL 0 $12
24 SEND_VAR $12
25 DO_ICALL
83 26 > INIT_FCALL 'var_dump'
27 SEND_VAR !1
28 DO_ICALL
84 29 > RETURN null
End of function test_get
Function test_set:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 8
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 17, Position 2 = 26
Branch analysis from position: 17
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 26
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 17, Position 2 = 26
Branch analysis from position: 17
Branch analysis from position: 26
filename: /in/VGDNn
function name: test_set
number of ops: 38
compiled vars: !0 = $prop, !1 = $value, !2 = $obj, !3 = $actual
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
86 0 E > RECV !0
87 1 FETCH_OBJ_R ~4 'is_known_prop'
2 > JMPZ ~4, ->8
3 > FETCH_OBJ_R ~5 !2
4 FETCH_OBJ_R ~6 ~5, 'known'
5 CAST 7 ~7 ~6
6 QM_ASSIGN ~8 ~7
7 > JMP ->9
8 > QM_ASSIGN ~8 'I+am+an+unknown+dynamic+property'
9 > ASSIGN !1, ~8
88 10 ASSIGN_OBJ !2, !0
11 OP_DATA !1
89 12 FETCH_OBJ_R ~11 'obj'
13 FETCH_OBJ_R ~12 ~11, !0
14 ASSIGN !3, ~12
91 15 FETCH_OBJ_R ~14 'is_known_prop'
16 > JMPZ ~14, ->26
92 17 > INIT_FCALL 'printf'
96 18 SEND_VAL '%0A%0A__set%28%29+results+should+set+the+value+%25s+and+not+throw+a+deprecation+on+PHP+8.2%2B.However%2C+once+the+__get%28%29+is+called+again%2C+it+will+set+reset+it+to+an+object+with+prop1+and+prop2.%0A'
97 19 INIT_METHOD_CALL 'test_results'
20 INSTANCEOF ~15 !3, 'stdClass'
21 SEND_VAL_EX ~15
22 DO_FCALL 0 $16
23 SEND_VAR $16
92 24 DO_ICALL
91 25 > JMP ->34
100 26 > INIT_FCALL 'printf'
104 27 SEND_VAL '%0A%0A__set%28%29+results+should+set+the+value+%25s+and+not+throw+a+deprecation+on+PHP+8.2%2B.The+set+value+should+remain+set+when+invoking+__get%28%29%0A'
105 28 INIT_METHOD_CALL 'test_results'
29 IS_IDENTICAL ~18 !1, !3
30 SEND_VAL_EX ~18
31 DO_FCALL 0 $19
32 SEND_VAR $19
100 33 DO_ICALL
109 34 > INIT_FCALL 'var_dump'
35 SEND_VAR !3
36 DO_ICALL
110 37 > RETURN null
End of function test_set
Function test_unset:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 9, Position 2 = 19
Branch analysis from position: 9
1 jumps found. (Code = 42) Position 1 = 28
Branch analysis from position: 28
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 19
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/VGDNn
function name: test_unset
number of ops: 32
compiled vars: !0 = $prop, !1 = $actual, !2 = $message
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
112 0 E > RECV !0
113 1 FETCH_OBJ_UNSET $3 'obj'
2 UNSET_OBJ $3, !0
114 3 FETCH_OBJ_R ~4 'obj'
4 FETCH_OBJ_R ~5 ~4, !0
5 ASSIGN !1, ~5
116 6 ASSIGN !2, '%0A%0A__unset%28%29+%2B+__get%28%29+results+should+be+%25s+%25s%0A'
117 7 FETCH_OBJ_R ~8 'is_known_prop'
8 > JMPZ ~8, ->19
118 9 > INIT_FCALL 'printf'
119 10 SEND_VAR !2
120 11 SEND_VAL 're-init+the+object+with+prop1+and+prop2'
121 12 INIT_METHOD_CALL 'test_results'
13 INSTANCEOF ~9 !1, 'stdClass'
14 SEND_VAL_EX ~9
15 DO_FCALL 0 $10
16 SEND_VAR $10
118 17 DO_ICALL
117 18 > JMP ->28
124 19 > INIT_FCALL 'printf'
125 20 SEND_VAR !2
126 21 SEND_VAL 'null'
127 22 INIT_METHOD_CALL 'test_results'
23 TYPE_CHECK 2 ~12 !1
24 SEND_VAL_EX ~12
25 DO_FCALL 0 $13
26 SEND_VAR $13
124 27 DO_ICALL
130 28 > INIT_FCALL 'var_dump'
29 SEND_VAR !1
30 DO_ICALL
131 31 > RETURN null
End of function test_unset
Function test_results:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 2, Position 2 = 4
Branch analysis from position: 2
1 jumps found. (Code = 42) Position 1 = 5
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/VGDNn
function name: test_results
number of ops: 7
compiled vars: !0 = $actual
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
133 0 E > RECV !0
134 1 > JMPZ !0, ->4
2 > QM_ASSIGN ~1 '%E2%9C%85'
3 > JMP ->5
4 > QM_ASSIGN ~1 '%E2%9D%8C'
5 > > RETURN ~1
135 6* > RETURN null
End of function test_results
End of class TestMagicMethods.
Generated using Vulcan Logic Dumper, using php 8.0.0