passByReference_010.phpt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. --TEST--
  2. Passing assignments by reference
  3. --FILE--
  4. <?php
  5. function f(&$a) {
  6. var_dump($a);
  7. $a = "a.changed";
  8. }
  9. echo "\n\n---> Pass constant assignment by reference:\n";
  10. try {
  11. f($a="a.original");
  12. var_dump($a);
  13. } catch (Throwable $e) {
  14. echo "Exception: " . $e->getMessage() ."\n";
  15. }
  16. echo "\n\n---> Pass variable assignment by reference:\n";
  17. try {
  18. unset($a);
  19. $a = "a.original";
  20. f($b = $a);
  21. var_dump($a);
  22. } catch (Throwable $e) {
  23. echo "Exception: " . $e->getMessage() ."\n";
  24. }
  25. echo "\n\n---> Pass reference assignment by reference:\n";
  26. try {
  27. unset($a, $b);
  28. $a = "a.original";
  29. f($b =& $a);
  30. var_dump($a);
  31. } catch (Throwable $e) {
  32. echo "Exception: " . $e->getMessage() ."\n";
  33. }
  34. echo "\n\n---> Pass concat assignment by reference:\n";
  35. try {
  36. unset($a, $b);
  37. $b = "b.original";
  38. $a = "a.original";
  39. f($b .= $a);
  40. var_dump($a);
  41. } catch (Throwable $e) {
  42. echo "Exception: " . $e->getMessage() ."\n";
  43. }
  44. ?>
  45. --EXPECT--
  46. ---> Pass constant assignment by reference:
  47. Exception: f(): Argument #1 ($a) cannot be passed by reference
  48. ---> Pass variable assignment by reference:
  49. Exception: f(): Argument #1 ($a) cannot be passed by reference
  50. ---> Pass reference assignment by reference:
  51. string(10) "a.original"
  52. string(9) "a.changed"
  53. ---> Pass concat assignment by reference:
  54. Exception: f(): Argument #1 ($a) cannot be passed by reference