closure_014.phpt 970 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. --TEST--
  2. Closure 014: return by value/reference
  3. --FILE--
  4. <?php
  5. class C1 {
  6. function __invoke() {
  7. return 0;
  8. }
  9. }
  10. class C2 {
  11. function &__invoke(&$a) {
  12. return $a;
  13. }
  14. }
  15. class C3 {
  16. function __invoke() {
  17. }
  18. }
  19. $x = new C1();
  20. var_dump($x());
  21. var_dump($x->__invoke());
  22. $x();
  23. $x->__invoke();
  24. $x = function() {
  25. return 0;
  26. };
  27. var_dump($x());
  28. var_dump($x->__invoke());
  29. $x();
  30. $x->__invoke();
  31. $x = new C2();
  32. $a = $b = $c = $d = 1;
  33. $e =& $x($a);
  34. $e = 2;
  35. var_dump($a);
  36. $e =& $x->__invoke($b);
  37. $e = 3;
  38. var_dump($b);
  39. $x($b);
  40. $x->__invoke($b);
  41. $x = function & (&$a) {
  42. return $a;
  43. };
  44. $e =& $x($c);
  45. $e = 4;
  46. var_dump($c);
  47. $e =& $x->__invoke($d);
  48. $e = 5;
  49. var_dump($d);
  50. $x($d);
  51. $x->__invoke($d);
  52. $x = new C3();
  53. var_dump($x());
  54. var_dump($x->__invoke());
  55. $x();
  56. $x->__invoke();
  57. $x = function() {
  58. };
  59. var_dump($x());
  60. var_dump($x->__invoke());
  61. $x();
  62. $x->__invoke();
  63. ?>
  64. --EXPECT--
  65. int(0)
  66. int(0)
  67. int(0)
  68. int(0)
  69. int(2)
  70. int(3)
  71. int(4)
  72. int(5)
  73. NULL
  74. NULL
  75. NULL
  76. NULL