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