a676db68ae51d52ea84ab21bf62c8039d5d47ea4
[yaffs-website] / vendor / nikic / php-parser / test / code / parser / stmt / class / anonymous.test
1 Anonymous classes
2 -----
3 <?php
4
5 new class {
6     public function test() {}
7 };
8 new class extends A implements B, C {};
9 new class() {
10     public $foo;
11 };
12 new class($a, $b) extends A {
13     use T;
14 };
15
16 class A {
17     public function test() {
18         return new class($this) extends A {
19             const A = 'B';
20         };
21     }
22 }
23 -----
24 array(
25     0: Stmt_Expression(
26         expr: Expr_New(
27             class: Stmt_Class(
28                 flags: 0
29                 name: null
30                 extends: null
31                 implements: array(
32                 )
33                 stmts: array(
34                     0: Stmt_ClassMethod(
35                         flags: MODIFIER_PUBLIC (1)
36                         byRef: false
37                         name: Identifier(
38                             name: test
39                         )
40                         params: array(
41                         )
42                         returnType: null
43                         stmts: array(
44                         )
45                     )
46                 )
47             )
48             args: array(
49             )
50         )
51     )
52     1: Stmt_Expression(
53         expr: Expr_New(
54             class: Stmt_Class(
55                 flags: 0
56                 name: null
57                 extends: Name(
58                     parts: array(
59                         0: A
60                     )
61                 )
62                 implements: array(
63                     0: Name(
64                         parts: array(
65                             0: B
66                         )
67                     )
68                     1: Name(
69                         parts: array(
70                             0: C
71                         )
72                     )
73                 )
74                 stmts: array(
75                 )
76             )
77             args: array(
78             )
79         )
80     )
81     2: Stmt_Expression(
82         expr: Expr_New(
83             class: Stmt_Class(
84                 flags: 0
85                 name: null
86                 extends: null
87                 implements: array(
88                 )
89                 stmts: array(
90                     0: Stmt_Property(
91                         flags: MODIFIER_PUBLIC (1)
92                         props: array(
93                             0: Stmt_PropertyProperty(
94                                 name: VarLikeIdentifier(
95                                     name: foo
96                                 )
97                                 default: null
98                             )
99                         )
100                     )
101                 )
102             )
103             args: array(
104             )
105         )
106     )
107     3: Stmt_Expression(
108         expr: Expr_New(
109             class: Stmt_Class(
110                 flags: 0
111                 name: null
112                 extends: Name(
113                     parts: array(
114                         0: A
115                     )
116                 )
117                 implements: array(
118                 )
119                 stmts: array(
120                     0: Stmt_TraitUse(
121                         traits: array(
122                             0: Name(
123                                 parts: array(
124                                     0: T
125                                 )
126                             )
127                         )
128                         adaptations: array(
129                         )
130                     )
131                 )
132             )
133             args: array(
134                 0: Arg(
135                     value: Expr_Variable(
136                         name: a
137                     )
138                     byRef: false
139                     unpack: false
140                 )
141                 1: Arg(
142                     value: Expr_Variable(
143                         name: b
144                     )
145                     byRef: false
146                     unpack: false
147                 )
148             )
149         )
150     )
151     4: Stmt_Class(
152         flags: 0
153         name: Identifier(
154             name: A
155         )
156         extends: null
157         implements: array(
158         )
159         stmts: array(
160             0: Stmt_ClassMethod(
161                 flags: MODIFIER_PUBLIC (1)
162                 byRef: false
163                 name: Identifier(
164                     name: test
165                 )
166                 params: array(
167                 )
168                 returnType: null
169                 stmts: array(
170                     0: Stmt_Return(
171                         expr: Expr_New(
172                             class: Stmt_Class(
173                                 flags: 0
174                                 name: null
175                                 extends: Name(
176                                     parts: array(
177                                         0: A
178                                     )
179                                 )
180                                 implements: array(
181                                 )
182                                 stmts: array(
183                                     0: Stmt_ClassConst(
184                                         flags: 0
185                                         consts: array(
186                                             0: Const(
187                                                 name: Identifier(
188                                                     name: A
189                                                 )
190                                                 value: Scalar_String(
191                                                     value: B
192                                                 )
193                                             )
194                                         )
195                                     )
196                                 )
197                             )
198                             args: array(
199                                 0: Arg(
200                                     value: Expr_Variable(
201                                         name: this
202                                     )
203                                     byRef: false
204                                     unpack: false
205                                 )
206                             )
207                         )
208                     )
209                 )
210             )
211         )
212     )
213 )