1UVS indirect calls
2-----
3<?php
4
5id('var_dump')(1);
6id('id')('var_dump')(2);
7id()()('var_dump')(4);
8id(['udef', 'id'])[1]()('var_dump')(5);
9(function($x) { return $x; })('id')('var_dump')(8);
10($f = function($x = null) use (&$f) {
11    return $x ?: $f;
12})()()()('var_dump')(9);
13[$obj, 'id']()('id')($id)('var_dump')(10);
14'id'()('id')('var_dump')(12);
15('i' . 'd')()('var_dump')(13);
16'\id'('var_dump')(14);
17-----
18array(
19    0: Stmt_Expression(
20        expr: Expr_FuncCall(
21            name: Expr_FuncCall(
22                name: Name(
23                    name: id
24                )
25                args: array(
26                    0: Arg(
27                        name: null
28                        value: Scalar_String(
29                            value: var_dump
30                        )
31                        byRef: false
32                        unpack: false
33                    )
34                )
35            )
36            args: array(
37                0: Arg(
38                    name: null
39                    value: Scalar_Int(
40                        value: 1
41                    )
42                    byRef: false
43                    unpack: false
44                )
45            )
46        )
47    )
48    1: Stmt_Expression(
49        expr: Expr_FuncCall(
50            name: Expr_FuncCall(
51                name: Expr_FuncCall(
52                    name: Name(
53                        name: id
54                    )
55                    args: array(
56                        0: Arg(
57                            name: null
58                            value: Scalar_String(
59                                value: id
60                            )
61                            byRef: false
62                            unpack: false
63                        )
64                    )
65                )
66                args: array(
67                    0: Arg(
68                        name: null
69                        value: Scalar_String(
70                            value: var_dump
71                        )
72                        byRef: false
73                        unpack: false
74                    )
75                )
76            )
77            args: array(
78                0: Arg(
79                    name: null
80                    value: Scalar_Int(
81                        value: 2
82                    )
83                    byRef: false
84                    unpack: false
85                )
86            )
87        )
88    )
89    2: Stmt_Expression(
90        expr: Expr_FuncCall(
91            name: Expr_FuncCall(
92                name: Expr_FuncCall(
93                    name: Expr_FuncCall(
94                        name: Name(
95                            name: id
96                        )
97                        args: array(
98                        )
99                    )
100                    args: array(
101                    )
102                )
103                args: array(
104                    0: Arg(
105                        name: null
106                        value: Scalar_String(
107                            value: var_dump
108                        )
109                        byRef: false
110                        unpack: false
111                    )
112                )
113            )
114            args: array(
115                0: Arg(
116                    name: null
117                    value: Scalar_Int(
118                        value: 4
119                    )
120                    byRef: false
121                    unpack: false
122                )
123            )
124        )
125    )
126    3: Stmt_Expression(
127        expr: Expr_FuncCall(
128            name: Expr_FuncCall(
129                name: Expr_FuncCall(
130                    name: Expr_ArrayDimFetch(
131                        var: Expr_FuncCall(
132                            name: Name(
133                                name: id
134                            )
135                            args: array(
136                                0: Arg(
137                                    name: null
138                                    value: Expr_Array(
139                                        items: array(
140                                            0: ArrayItem(
141                                                key: null
142                                                value: Scalar_String(
143                                                    value: udef
144                                                )
145                                                byRef: false
146                                                unpack: false
147                                            )
148                                            1: ArrayItem(
149                                                key: null
150                                                value: Scalar_String(
151                                                    value: id
152                                                )
153                                                byRef: false
154                                                unpack: false
155                                            )
156                                        )
157                                    )
158                                    byRef: false
159                                    unpack: false
160                                )
161                            )
162                        )
163                        dim: Scalar_Int(
164                            value: 1
165                        )
166                    )
167                    args: array(
168                    )
169                )
170                args: array(
171                    0: Arg(
172                        name: null
173                        value: Scalar_String(
174                            value: var_dump
175                        )
176                        byRef: false
177                        unpack: false
178                    )
179                )
180            )
181            args: array(
182                0: Arg(
183                    name: null
184                    value: Scalar_Int(
185                        value: 5
186                    )
187                    byRef: false
188                    unpack: false
189                )
190            )
191        )
192    )
193    4: Stmt_Expression(
194        expr: Expr_FuncCall(
195            name: Expr_FuncCall(
196                name: Expr_FuncCall(
197                    name: Expr_Closure(
198                        attrGroups: array(
199                        )
200                        static: false
201                        byRef: false
202                        params: array(
203                            0: Param(
204                                attrGroups: array(
205                                )
206                                flags: 0
207                                type: null
208                                byRef: false
209                                variadic: false
210                                var: Expr_Variable(
211                                    name: x
212                                )
213                                default: null
214                                hooks: array(
215                                )
216                            )
217                        )
218                        uses: array(
219                        )
220                        returnType: null
221                        stmts: array(
222                            0: Stmt_Return(
223                                expr: Expr_Variable(
224                                    name: x
225                                )
226                            )
227                        )
228                    )
229                    args: array(
230                        0: Arg(
231                            name: null
232                            value: Scalar_String(
233                                value: id
234                            )
235                            byRef: false
236                            unpack: false
237                        )
238                    )
239                )
240                args: array(
241                    0: Arg(
242                        name: null
243                        value: Scalar_String(
244                            value: var_dump
245                        )
246                        byRef: false
247                        unpack: false
248                    )
249                )
250            )
251            args: array(
252                0: Arg(
253                    name: null
254                    value: Scalar_Int(
255                        value: 8
256                    )
257                    byRef: false
258                    unpack: false
259                )
260            )
261        )
262    )
263    5: Stmt_Expression(
264        expr: Expr_FuncCall(
265            name: Expr_FuncCall(
266                name: Expr_FuncCall(
267                    name: Expr_FuncCall(
268                        name: Expr_FuncCall(
269                            name: Expr_Assign(
270                                var: Expr_Variable(
271                                    name: f
272                                )
273                                expr: Expr_Closure(
274                                    attrGroups: array(
275                                    )
276                                    static: false
277                                    byRef: false
278                                    params: array(
279                                        0: Param(
280                                            attrGroups: array(
281                                            )
282                                            flags: 0
283                                            type: null
284                                            byRef: false
285                                            variadic: false
286                                            var: Expr_Variable(
287                                                name: x
288                                            )
289                                            default: Expr_ConstFetch(
290                                                name: Name(
291                                                    name: null
292                                                )
293                                            )
294                                            hooks: array(
295                                            )
296                                        )
297                                    )
298                                    uses: array(
299                                        0: ClosureUse(
300                                            var: Expr_Variable(
301                                                name: f
302                                            )
303                                            byRef: true
304                                        )
305                                    )
306                                    returnType: null
307                                    stmts: array(
308                                        0: Stmt_Return(
309                                            expr: Expr_Ternary(
310                                                cond: Expr_Variable(
311                                                    name: x
312                                                )
313                                                if: null
314                                                else: Expr_Variable(
315                                                    name: f
316                                                )
317                                            )
318                                        )
319                                    )
320                                )
321                            )
322                            args: array(
323                            )
324                        )
325                        args: array(
326                        )
327                    )
328                    args: array(
329                    )
330                )
331                args: array(
332                    0: Arg(
333                        name: null
334                        value: Scalar_String(
335                            value: var_dump
336                        )
337                        byRef: false
338                        unpack: false
339                    )
340                )
341            )
342            args: array(
343                0: Arg(
344                    name: null
345                    value: Scalar_Int(
346                        value: 9
347                    )
348                    byRef: false
349                    unpack: false
350                )
351            )
352        )
353    )
354    6: Stmt_Expression(
355        expr: Expr_FuncCall(
356            name: Expr_FuncCall(
357                name: Expr_FuncCall(
358                    name: Expr_FuncCall(
359                        name: Expr_FuncCall(
360                            name: Expr_Array(
361                                items: array(
362                                    0: ArrayItem(
363                                        key: null
364                                        value: Expr_Variable(
365                                            name: obj
366                                        )
367                                        byRef: false
368                                        unpack: false
369                                    )
370                                    1: ArrayItem(
371                                        key: null
372                                        value: Scalar_String(
373                                            value: id
374                                        )
375                                        byRef: false
376                                        unpack: false
377                                    )
378                                )
379                            )
380                            args: array(
381                            )
382                        )
383                        args: array(
384                            0: Arg(
385                                name: null
386                                value: Scalar_String(
387                                    value: id
388                                )
389                                byRef: false
390                                unpack: false
391                            )
392                        )
393                    )
394                    args: array(
395                        0: Arg(
396                            name: null
397                            value: Expr_Variable(
398                                name: id
399                            )
400                            byRef: false
401                            unpack: false
402                        )
403                    )
404                )
405                args: array(
406                    0: Arg(
407                        name: null
408                        value: Scalar_String(
409                            value: var_dump
410                        )
411                        byRef: false
412                        unpack: false
413                    )
414                )
415            )
416            args: array(
417                0: Arg(
418                    name: null
419                    value: Scalar_Int(
420                        value: 10
421                    )
422                    byRef: false
423                    unpack: false
424                )
425            )
426        )
427    )
428    7: Stmt_Expression(
429        expr: Expr_FuncCall(
430            name: Expr_FuncCall(
431                name: Expr_FuncCall(
432                    name: Expr_FuncCall(
433                        name: Scalar_String(
434                            value: id
435                        )
436                        args: array(
437                        )
438                    )
439                    args: array(
440                        0: Arg(
441                            name: null
442                            value: Scalar_String(
443                                value: id
444                            )
445                            byRef: false
446                            unpack: false
447                        )
448                    )
449                )
450                args: array(
451                    0: Arg(
452                        name: null
453                        value: Scalar_String(
454                            value: var_dump
455                        )
456                        byRef: false
457                        unpack: false
458                    )
459                )
460            )
461            args: array(
462                0: Arg(
463                    name: null
464                    value: Scalar_Int(
465                        value: 12
466                    )
467                    byRef: false
468                    unpack: false
469                )
470            )
471        )
472    )
473    8: Stmt_Expression(
474        expr: Expr_FuncCall(
475            name: Expr_FuncCall(
476                name: Expr_FuncCall(
477                    name: Expr_BinaryOp_Concat(
478                        left: Scalar_String(
479                            value: i
480                        )
481                        right: Scalar_String(
482                            value: d
483                        )
484                    )
485                    args: array(
486                    )
487                )
488                args: array(
489                    0: Arg(
490                        name: null
491                        value: Scalar_String(
492                            value: var_dump
493                        )
494                        byRef: false
495                        unpack: false
496                    )
497                )
498            )
499            args: array(
500                0: Arg(
501                    name: null
502                    value: Scalar_Int(
503                        value: 13
504                    )
505                    byRef: false
506                    unpack: false
507                )
508            )
509        )
510    )
511    9: Stmt_Expression(
512        expr: Expr_FuncCall(
513            name: Expr_FuncCall(
514                name: Scalar_String(
515                    value: \id
516                )
517                args: array(
518                    0: Arg(
519                        name: null
520                        value: Scalar_String(
521                            value: var_dump
522                        )
523                        byRef: false
524                        unpack: false
525                    )
526                )
527            )
528            args: array(
529                0: Arg(
530                    name: null
531                    value: Scalar_Int(
532                        value: 14
533                    )
534                    byRef: false
535                    unpack: false
536                )
537            )
538        )
539    )
540)
541