call_user_func_008.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. --TEST--
  2. call_user_func() behavior with references
  3. --FILE--
  4. <?php
  5. function test(&$ref1, &$ref2) {
  6. $ref1 += 42;
  7. $ref2 -= 42;
  8. return true;
  9. }
  10. $i = $j = 0;
  11. var_dump(call_user_func('test', $i, $j));
  12. var_dump($i, $j);
  13. var_dump(call_user_func_array('test', [$i, $j]));
  14. var_dump($i, $j);
  15. $x =& $i; $y =& $j;
  16. var_dump(call_user_func('test', $i, $j));
  17. var_dump($i, $j);
  18. var_dump(call_user_func_array('test', [$i, $j]));
  19. var_dump($i, $j);
  20. ?>
  21. --EXPECTF--
  22. Warning: test(): Argument #1 ($ref1) must be passed by reference, value given in %s on line %d
  23. Warning: test(): Argument #2 ($ref2) must be passed by reference, value given in %s on line %d
  24. bool(true)
  25. int(0)
  26. int(0)
  27. Warning: test(): Argument #1 ($ref1) must be passed by reference, value given in %s on line %d
  28. Warning: test(): Argument #2 ($ref2) must be passed by reference, value given in %s on line %d
  29. bool(true)
  30. int(0)
  31. int(0)
  32. Warning: test(): Argument #1 ($ref1) must be passed by reference, value given in %s on line %d
  33. Warning: test(): Argument #2 ($ref2) must be passed by reference, value given in %s on line %d
  34. bool(true)
  35. int(0)
  36. int(0)
  37. Warning: test(): Argument #1 ($ref1) must be passed by reference, value given in %s on line %d
  38. Warning: test(): Argument #2 ($ref2) must be passed by reference, value given in %s on line %d
  39. bool(true)
  40. int(0)
  41. int(0)