engine_assignExecutionOrder_008.phpt 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. --TEST--
  2. Ensure by value assignments leave temporaries on the stack, for all sorts of assignees.
  3. --FILE--
  4. <?php
  5. function f() { return 0; }
  6. $a[0][1] = 'good';
  7. $a[1][1] = 'bad';
  8. echo "\n" . '$i=f(): ';
  9. echo $a[$i=f()][++$i];
  10. unset($i);
  11. echo "\n" . '$$x=f(): ';
  12. $x='i';
  13. echo $a[$$x=f()][++$$x];
  14. unset($i, $x);
  15. echo "\n" . '${\'i\'}=f(): ';
  16. echo $a[${'i'}=f()][++${'i'}];
  17. unset(${'i'});
  18. echo "\n" . '$i[0]=f(): ';
  19. echo $a[$i[0]=f()][++$i[0]];
  20. unset($i);
  21. echo "\n" . '$i[0][0]=f(): ';
  22. echo $a[$i[0][0]=f()][++$i[0][0]];
  23. unset($i);
  24. echo "\n" . '$i->p=f(): ';
  25. echo $a[$i->p=f()][++$i->p];
  26. unset($i);
  27. echo "\n" . '$i->p->q=f(): ';
  28. echo $a[$i->p->q=f()][++$i->p->q];
  29. unset($i);
  30. echo "\n" . '$i->p[0]=f(): ';
  31. echo $a[$i->p[0]=f()][++$i->p[0]];
  32. unset($i);
  33. echo "\n" . '$i->p[0]->p=f(): ';
  34. echo $a[$i->p[0]->p=f()][++$i->p[0]->p];
  35. unset($i);
  36. Class C {
  37. static $p;
  38. }
  39. echo "\n" . 'C::$p=f(): ';
  40. echo $a[C::$p=f()][++C::$p];
  41. echo "\n" . 'C::$p[0]=f(): ';
  42. C::$p = array();
  43. echo $a[C::$p[0]=f()][++C::$p[0]];
  44. echo "\n" . 'C::$p->q=f(): ';
  45. C::$p = new stdclass;
  46. echo $a[C::$p->q=f()][++C::$p->q];
  47. ?>
  48. --EXPECTF--
  49. $i=f(): good
  50. $$x=f(): good
  51. ${'i'}=f(): good
  52. $i[0]=f(): good
  53. $i[0][0]=f(): good
  54. $i->p=f():
  55. Warning: Creating default object from empty value in %s on line %d
  56. good
  57. $i->p->q=f():
  58. Warning: Creating default object from empty value in %s on line %d
  59. good
  60. $i->p[0]=f(): good
  61. $i->p[0]->p=f():
  62. Warning: Creating default object from empty value in %s on line %d
  63. good
  64. C::$p=f(): good
  65. C::$p[0]=f(): good
  66. C::$p->q=f(): good