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