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