passByReference_007.phpt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. --TEST--
  2. Pass function and method calls by reference and by value.
  3. --FILE--
  4. <?php
  5. class C {
  6. static function sreturnVal() {
  7. global $a;
  8. return $a;
  9. }
  10. static function &sreturnReference() {
  11. global $a;
  12. return $a;
  13. }
  14. function returnVal() {
  15. global $a;
  16. return $a;
  17. }
  18. function &returnReference() {
  19. global $a;
  20. return $a;
  21. }
  22. }
  23. function returnVal() {
  24. global $a;
  25. return $a;
  26. }
  27. function &returnReference() {
  28. global $a;
  29. return $a;
  30. }
  31. function foo(&$ref) {
  32. var_dump($ref);
  33. $ref = "changed";
  34. }
  35. echo "Pass a function call that returns a value:\n";
  36. $a = "original";
  37. foo(returnVal());
  38. var_dump($a);
  39. echo "Pass a function call that returns a reference:\n";
  40. $a = "original";
  41. foo(returnReference());
  42. var_dump($a);
  43. echo "\nPass a static method call that returns a value:\n";
  44. $a = "original";
  45. foo(C::sreturnVal());
  46. var_dump($a);
  47. echo "Pass a static method call that returns a reference:\n";
  48. $a = "original";
  49. foo(C::sreturnReference());
  50. var_dump($a);
  51. $myC = new C;
  52. echo "\nPass a method call that returns a value:\n";
  53. $a = "original";
  54. foo($myC->returnVal());
  55. var_dump($a);
  56. echo "Pass a method call that returns a reference:\n";
  57. $a = "original";
  58. foo($myC->returnReference());
  59. var_dump($a);
  60. ?>
  61. --EXPECTF--
  62. Pass a function call that returns a value:
  63. Notice: Only variables should be passed by reference in %s on line 44
  64. string(8) "original"
  65. string(8) "original"
  66. Pass a function call that returns a reference:
  67. string(8) "original"
  68. string(7) "changed"
  69. Pass a static method call that returns a value:
  70. Notice: Only variables should be passed by reference in %s on line 55
  71. string(8) "original"
  72. string(8) "original"
  73. Pass a static method call that returns a reference:
  74. string(8) "original"
  75. string(7) "changed"
  76. Pass a method call that returns a value:
  77. Notice: Only variables should be passed by reference in %s on line 67
  78. string(8) "original"
  79. string(8) "original"
  80. Pass a method call that returns a reference:
  81. string(8) "original"
  82. string(7) "changed"