1Object access
2-----
3<?php
4
5// property fetch variations
6$a->b;
7$a->b['c'];
8$a->b{'c'};
9
10// method call variations
11$a->b();
12$a->{'b'}();
13$a->$b();
14$a->$b['c']();
15
16// array dereferencing
17$a->b()['c'];
18$a->b(){'c'};
19-----
20array(
21    0: Stmt_Expression(
22        expr: Expr_PropertyFetch(
23            var: Expr_Variable(
24                name: a
25            )
26            name: Identifier(
27                name: b
28            )
29        )
30        comments: array(
31            0: // property fetch variations
32        )
33    )
34    1: Stmt_Expression(
35        expr: Expr_ArrayDimFetch(
36            var: Expr_PropertyFetch(
37                var: Expr_Variable(
38                    name: a
39                )
40                name: Identifier(
41                    name: b
42                )
43            )
44            dim: Scalar_String(
45                value: c
46            )
47        )
48    )
49    2: Stmt_Expression(
50        expr: Expr_ArrayDimFetch(
51            var: Expr_PropertyFetch(
52                var: Expr_Variable(
53                    name: a
54                )
55                name: Identifier(
56                    name: b
57                )
58            )
59            dim: Scalar_String(
60                value: c
61            )
62        )
63    )
64    3: Stmt_Expression(
65        expr: Expr_MethodCall(
66            var: Expr_Variable(
67                name: a
68            )
69            name: Identifier(
70                name: b
71            )
72            args: array(
73            )
74        )
75        comments: array(
76            0: // method call variations
77        )
78    )
79    4: Stmt_Expression(
80        expr: Expr_MethodCall(
81            var: Expr_Variable(
82                name: a
83            )
84            name: Scalar_String(
85                value: b
86            )
87            args: array(
88            )
89        )
90    )
91    5: Stmt_Expression(
92        expr: Expr_MethodCall(
93            var: Expr_Variable(
94                name: a
95            )
96            name: Expr_Variable(
97                name: b
98            )
99            args: array(
100            )
101        )
102    )
103    6: Stmt_Expression(
104        expr: Expr_FuncCall(
105            name: Expr_ArrayDimFetch(
106                var: Expr_PropertyFetch(
107                    var: Expr_Variable(
108                        name: a
109                    )
110                    name: Expr_Variable(
111                        name: b
112                    )
113                )
114                dim: Scalar_String(
115                    value: c
116                )
117            )
118            args: array(
119            )
120        )
121    )
122    7: Stmt_Expression(
123        expr: Expr_ArrayDimFetch(
124            var: Expr_MethodCall(
125                var: Expr_Variable(
126                    name: a
127                )
128                name: Identifier(
129                    name: b
130                )
131                args: array(
132                )
133            )
134            dim: Scalar_String(
135                value: c
136            )
137        )
138        comments: array(
139            0: // array dereferencing
140        )
141    )
142    8: Stmt_Expression(
143        expr: Expr_ArrayDimFetch(
144            var: Expr_MethodCall(
145                var: Expr_Variable(
146                    name: a
147                )
148                name: Identifier(
149                    name: b
150                )
151                args: array(
152                )
153            )
154            dim: Scalar_String(
155                value: c
156            )
157        )
158    )
159)
160