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                            )
215                        )
216                        uses: array(
217                        )
218                        returnType: null
219                        stmts: array(
220                            0: Stmt_Return(
221                                expr: Expr_Variable(
222                                    name: x
223                                )
224                            )
225                        )
226                    )
227                    args: array(
228                        0: Arg(
229                            name: null
230                            value: Scalar_String(
231                                value: id
232                            )
233                            byRef: false
234                            unpack: false
235                        )
236                    )
237                )
238                args: array(
239                    0: Arg(
240                        name: null
241                        value: Scalar_String(
242                            value: var_dump
243                        )
244                        byRef: false
245                        unpack: false
246                    )
247                )
248            )
249            args: array(
250                0: Arg(
251                    name: null
252                    value: Scalar_Int(
253                        value: 8
254                    )
255                    byRef: false
256                    unpack: false
257                )
258            )
259        )
260    )
261    5: Stmt_Expression(
262        expr: Expr_FuncCall(
263            name: Expr_FuncCall(
264                name: Expr_FuncCall(
265                    name: Expr_FuncCall(
266                        name: Expr_FuncCall(
267                            name: Expr_Assign(
268                                var: Expr_Variable(
269                                    name: f
270                                )
271                                expr: Expr_Closure(
272                                    attrGroups: array(
273                                    )
274                                    static: false
275                                    byRef: false
276                                    params: array(
277                                        0: Param(
278                                            attrGroups: array(
279                                            )
280                                            flags: 0
281                                            type: null
282                                            byRef: false
283                                            variadic: false
284                                            var: Expr_Variable(
285                                                name: x
286                                            )
287                                            default: Expr_ConstFetch(
288                                                name: Name(
289                                                    name: null
290                                                )
291                                            )
292                                        )
293                                    )
294                                    uses: array(
295                                        0: ClosureUse(
296                                            var: Expr_Variable(
297                                                name: f
298                                            )
299                                            byRef: true
300                                        )
301                                    )
302                                    returnType: null
303                                    stmts: array(
304                                        0: Stmt_Return(
305                                            expr: Expr_Ternary(
306                                                cond: Expr_Variable(
307                                                    name: x
308                                                )
309                                                if: null
310                                                else: Expr_Variable(
311                                                    name: f
312                                                )
313                                            )
314                                        )
315                                    )
316                                )
317                            )
318                            args: array(
319                            )
320                        )
321                        args: array(
322                        )
323                    )
324                    args: array(
325                    )
326                )
327                args: array(
328                    0: Arg(
329                        name: null
330                        value: Scalar_String(
331                            value: var_dump
332                        )
333                        byRef: false
334                        unpack: false
335                    )
336                )
337            )
338            args: array(
339                0: Arg(
340                    name: null
341                    value: Scalar_Int(
342                        value: 9
343                    )
344                    byRef: false
345                    unpack: false
346                )
347            )
348        )
349    )
350    6: Stmt_Expression(
351        expr: Expr_FuncCall(
352            name: Expr_FuncCall(
353                name: Expr_FuncCall(
354                    name: Expr_FuncCall(
355                        name: Expr_FuncCall(
356                            name: Expr_Array(
357                                items: array(
358                                    0: ArrayItem(
359                                        key: null
360                                        value: Expr_Variable(
361                                            name: obj
362                                        )
363                                        byRef: false
364                                        unpack: false
365                                    )
366                                    1: ArrayItem(
367                                        key: null
368                                        value: Scalar_String(
369                                            value: id
370                                        )
371                                        byRef: false
372                                        unpack: false
373                                    )
374                                )
375                            )
376                            args: array(
377                            )
378                        )
379                        args: array(
380                            0: Arg(
381                                name: null
382                                value: Scalar_String(
383                                    value: id
384                                )
385                                byRef: false
386                                unpack: false
387                            )
388                        )
389                    )
390                    args: array(
391                        0: Arg(
392                            name: null
393                            value: Expr_Variable(
394                                name: id
395                            )
396                            byRef: false
397                            unpack: false
398                        )
399                    )
400                )
401                args: array(
402                    0: Arg(
403                        name: null
404                        value: Scalar_String(
405                            value: var_dump
406                        )
407                        byRef: false
408                        unpack: false
409                    )
410                )
411            )
412            args: array(
413                0: Arg(
414                    name: null
415                    value: Scalar_Int(
416                        value: 10
417                    )
418                    byRef: false
419                    unpack: false
420                )
421            )
422        )
423    )
424    7: Stmt_Expression(
425        expr: Expr_FuncCall(
426            name: Expr_FuncCall(
427                name: Expr_FuncCall(
428                    name: Expr_FuncCall(
429                        name: Scalar_String(
430                            value: id
431                        )
432                        args: array(
433                        )
434                    )
435                    args: array(
436                        0: Arg(
437                            name: null
438                            value: Scalar_String(
439                                value: id
440                            )
441                            byRef: false
442                            unpack: false
443                        )
444                    )
445                )
446                args: array(
447                    0: Arg(
448                        name: null
449                        value: Scalar_String(
450                            value: var_dump
451                        )
452                        byRef: false
453                        unpack: false
454                    )
455                )
456            )
457            args: array(
458                0: Arg(
459                    name: null
460                    value: Scalar_Int(
461                        value: 12
462                    )
463                    byRef: false
464                    unpack: false
465                )
466            )
467        )
468    )
469    8: Stmt_Expression(
470        expr: Expr_FuncCall(
471            name: Expr_FuncCall(
472                name: Expr_FuncCall(
473                    name: Expr_BinaryOp_Concat(
474                        left: Scalar_String(
475                            value: i
476                        )
477                        right: Scalar_String(
478                            value: d
479                        )
480                    )
481                    args: array(
482                    )
483                )
484                args: array(
485                    0: Arg(
486                        name: null
487                        value: Scalar_String(
488                            value: var_dump
489                        )
490                        byRef: false
491                        unpack: false
492                    )
493                )
494            )
495            args: array(
496                0: Arg(
497                    name: null
498                    value: Scalar_Int(
499                        value: 13
500                    )
501                    byRef: false
502                    unpack: false
503                )
504            )
505        )
506    )
507    9: Stmt_Expression(
508        expr: Expr_FuncCall(
509            name: Expr_FuncCall(
510                name: Scalar_String(
511                    value: \id
512                )
513                args: array(
514                    0: Arg(
515                        name: null
516                        value: Scalar_String(
517                            value: var_dump
518                        )
519                        byRef: false
520                        unpack: false
521                    )
522                )
523            )
524            args: array(
525                0: Arg(
526                    name: null
527                    value: Scalar_Int(
528                        value: 14
529                    )
530                    byRef: false
531                    unpack: false
532                )
533            )
534        )
535    )
536)
537