passByReference_005.phpt 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. --TEST--
  2. Pass uninitialised variables by reference and by value to test implicit initialisation.
  3. --FILE--
  4. <?php
  5. function v($val) {
  6. $val = "Val changed";
  7. }
  8. function r(&$ref) {
  9. $ref = "Ref changed";
  10. }
  11. function vv($val1, $val2) {
  12. $val1 = "Val1 changed";
  13. $val2 = "Val2 changed";
  14. }
  15. function vr($val, &$ref) {
  16. $val = "Val changed";
  17. $ref = "Ref changed";
  18. }
  19. function rv(&$ref, $val) {
  20. $val = "Val changed";
  21. $ref = "Ref changed";
  22. }
  23. function rr(&$ref1, &$ref2) {
  24. $ref1 = "Ref1 changed";
  25. $ref2 = "Ref2 changed";
  26. }
  27. class C {
  28. function __construct($val, &$ref) {
  29. $val = "Val changed";
  30. $ref = "Ref changed";
  31. }
  32. function v($val) {
  33. $val = "Val changed";
  34. }
  35. function r(&$ref) {
  36. $ref = "Ref changed";
  37. }
  38. function vv($val1, $val2) {
  39. $val1 = "Val1 changed";
  40. $val2 = "Val2 changed";
  41. }
  42. function vr($val, &$ref) {
  43. $val = "Val changed";
  44. $ref = "Ref changed";
  45. }
  46. function rv(&$ref, $val) {
  47. $val = "Val changed";
  48. $ref = "Ref changed";
  49. }
  50. function rr(&$ref1, &$ref2) {
  51. $ref1 = "Ref1 changed";
  52. $ref2 = "Ref2 changed";
  53. }
  54. }
  55. echo "\n ---- Pass by ref / pass by val: functions ----\n";
  56. unset($u1, $u2);
  57. v($u1);
  58. r($u2);
  59. var_dump($u1, $u2);
  60. unset($u1, $u2);
  61. vv($u1, $u2);
  62. var_dump($u1, $u2);
  63. unset($u1, $u2);
  64. vr($u1, $u2);
  65. var_dump($u1, $u2);
  66. unset($u1, $u2);
  67. rv($u1, $u2);
  68. var_dump($u1, $u2);
  69. unset($u1, $u2);
  70. rr($u1, $u2);
  71. var_dump($u1, $u2);
  72. echo "\n\n ---- Pass by ref / pass by val: static method calls ----\n";
  73. unset($u1, $u2);
  74. C::v($u1);
  75. C::r($u2);
  76. var_dump($u1, $u2);
  77. unset($u1, $u2);
  78. C::vv($u1, $u2);
  79. var_dump($u1, $u2);
  80. unset($u1, $u2);
  81. C::vr($u1, $u2);
  82. var_dump($u1, $u2);
  83. unset($u1, $u2);
  84. C::rv($u1, $u2);
  85. var_dump($u1, $u2);
  86. unset($u1, $u2);
  87. C::rr($u1, $u2);
  88. var_dump($u1, $u2);
  89. echo "\n\n ---- Pass by ref / pass by val: instance method calls ----\n";
  90. unset($u1, $u2);
  91. $c = new C($u1, $u2);
  92. var_dump($u1, $u2);
  93. unset($u1, $u2);
  94. $c->v($u1);
  95. $c->r($u2);
  96. var_dump($u1, $u2);
  97. unset($u1, $u2);
  98. $c->vv($u1, $u2);
  99. var_dump($u1, $u2);
  100. unset($u1, $u2);
  101. $c->vr($u1, $u2);
  102. var_dump($u1, $u2);
  103. unset($u1, $u2);
  104. $c->rv($u1, $u2);
  105. var_dump($u1, $u2);
  106. unset($u1, $u2);
  107. $c->rr($u1, $u2);
  108. var_dump($u1, $u2);
  109. ?>
  110. --EXPECTF--
  111. ---- Pass by ref / pass by val: functions ----
  112. Notice: Undefined variable: u1 in %s on line 72
  113. Notice: Undefined variable: u1 in %s on line 74
  114. NULL
  115. string(11) "Ref changed"
  116. Notice: Undefined variable: u1 in %s on line 77
  117. Notice: Undefined variable: u2 in %s on line 77
  118. Notice: Undefined variable: u1 in %s on line 78
  119. Notice: Undefined variable: u2 in %s on line 78
  120. NULL
  121. NULL
  122. Notice: Undefined variable: u1 in %s on line 81
  123. Notice: Undefined variable: u1 in %s on line 82
  124. NULL
  125. string(11) "Ref changed"
  126. Notice: Undefined variable: u2 in %s on line 85
  127. Notice: Undefined variable: u2 in %s on line 86
  128. string(11) "Ref changed"
  129. NULL
  130. string(12) "Ref1 changed"
  131. string(12) "Ref2 changed"
  132. ---- Pass by ref / pass by val: static method calls ----
  133. Deprecated: Non-static method C::v() should not be called statically in %s on line 95
  134. Notice: Undefined variable: u1 in %s on line 95
  135. Deprecated: Non-static method C::r() should not be called statically in %s on line 96
  136. Notice: Undefined variable: u1 in %s on line 97
  137. NULL
  138. string(11) "Ref changed"
  139. Deprecated: Non-static method C::vv() should not be called statically in %s on line 100
  140. Notice: Undefined variable: u1 in %s on line 100
  141. Notice: Undefined variable: u2 in %s on line 100
  142. Notice: Undefined variable: u1 in %s on line 101
  143. Notice: Undefined variable: u2 in %s on line 101
  144. NULL
  145. NULL
  146. Deprecated: Non-static method C::vr() should not be called statically in %s on line 104
  147. Notice: Undefined variable: u1 in %s on line 104
  148. Notice: Undefined variable: u1 in %s on line 105
  149. NULL
  150. string(11) "Ref changed"
  151. Deprecated: Non-static method C::rv() should not be called statically in %s on line 108
  152. Notice: Undefined variable: u2 in %s on line 108
  153. Notice: Undefined variable: u2 in %s on line 109
  154. string(11) "Ref changed"
  155. NULL
  156. Deprecated: Non-static method C::rr() should not be called statically in %s on line 112
  157. string(12) "Ref1 changed"
  158. string(12) "Ref2 changed"
  159. ---- Pass by ref / pass by val: instance method calls ----
  160. Notice: Undefined variable: u1 in %s on line 117
  161. Notice: Undefined variable: u1 in %s on line 118
  162. NULL
  163. string(11) "Ref changed"
  164. Notice: Undefined variable: u1 in %s on line 121
  165. Notice: Undefined variable: u1 in %s on line 123
  166. NULL
  167. string(11) "Ref changed"
  168. Notice: Undefined variable: u1 in %s on line 126
  169. Notice: Undefined variable: u2 in %s on line 126
  170. Notice: Undefined variable: u1 in %s on line 127
  171. Notice: Undefined variable: u2 in %s on line 127
  172. NULL
  173. NULL
  174. Notice: Undefined variable: u1 in %s on line 130
  175. Notice: Undefined variable: u1 in %s on line 131
  176. NULL
  177. string(11) "Ref changed"
  178. Notice: Undefined variable: u2 in %s on line 134
  179. Notice: Undefined variable: u2 in %s on line 135
  180. string(11) "Ref changed"
  181. NULL
  182. string(12) "Ref1 changed"
  183. string(12) "Ref2 changed"