passByReference_005.phpt 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. --TEST--
  2. Pass uninitialized 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. static function static_v($val) {
  55. $val = "Val changed";
  56. }
  57. static function static_r(&$ref) {
  58. $ref = "Ref changed";
  59. }
  60. static function static_vv($val1, $val2) {
  61. $val1 = "Val1 changed";
  62. $val2 = "Val2 changed";
  63. }
  64. static function static_vr($val, &$ref) {
  65. $val = "Val changed";
  66. $ref = "Ref changed";
  67. }
  68. static function static_rv(&$ref, $val) {
  69. $val = "Val changed";
  70. $ref = "Ref changed";
  71. }
  72. static function static_rr(&$ref1, &$ref2) {
  73. $ref1 = "Ref1 changed";
  74. $ref2 = "Ref2 changed";
  75. }
  76. }
  77. echo "\n ---- Pass by ref / pass by val: functions ----\n";
  78. unset($u1, $u2);
  79. v($u1);
  80. r($u2);
  81. var_dump($u1, $u2);
  82. unset($u1, $u2);
  83. vv($u1, $u2);
  84. var_dump($u1, $u2);
  85. unset($u1, $u2);
  86. vr($u1, $u2);
  87. var_dump($u1, $u2);
  88. unset($u1, $u2);
  89. rv($u1, $u2);
  90. var_dump($u1, $u2);
  91. unset($u1, $u2);
  92. rr($u1, $u2);
  93. var_dump($u1, $u2);
  94. echo "\n\n ---- Pass by ref / pass by val: static method calls ----\n";
  95. unset($u1, $u2);
  96. C::static_v($u1);
  97. C::static_r($u2);
  98. var_dump($u1, $u2);
  99. unset($u1, $u2);
  100. C::static_vv($u1, $u2);
  101. var_dump($u1, $u2);
  102. unset($u1, $u2);
  103. C::static_vr($u1, $u2);
  104. var_dump($u1, $u2);
  105. unset($u1, $u2);
  106. C::static_rv($u1, $u2);
  107. var_dump($u1, $u2);
  108. unset($u1, $u2);
  109. C::static_rr($u1, $u2);
  110. var_dump($u1, $u2);
  111. echo "\n\n ---- Pass by ref / pass by val: instance method calls ----\n";
  112. unset($u1, $u2);
  113. $c = new C($u1, $u2);
  114. var_dump($u1, $u2);
  115. unset($u1, $u2);
  116. $c->v($u1);
  117. $c->r($u2);
  118. var_dump($u1, $u2);
  119. unset($u1, $u2);
  120. $c->vv($u1, $u2);
  121. var_dump($u1, $u2);
  122. unset($u1, $u2);
  123. $c->vr($u1, $u2);
  124. var_dump($u1, $u2);
  125. unset($u1, $u2);
  126. $c->rv($u1, $u2);
  127. var_dump($u1, $u2);
  128. unset($u1, $u2);
  129. $c->rr($u1, $u2);
  130. var_dump($u1, $u2);
  131. ?>
  132. --EXPECTF--
  133. ---- Pass by ref / pass by val: functions ----
  134. Warning: Undefined variable $u1 in %s on line %d
  135. Warning: Undefined variable $u1 in %s on line %d
  136. NULL
  137. string(11) "Ref changed"
  138. Warning: Undefined variable $u1 in %s on line %d
  139. Warning: Undefined variable $u2 in %s on line %d
  140. Warning: Undefined variable $u1 in %s on line %d
  141. Warning: Undefined variable $u2 in %s on line %d
  142. NULL
  143. NULL
  144. Warning: Undefined variable $u1 in %s on line %d
  145. Warning: Undefined variable $u1 in %s on line %d
  146. NULL
  147. string(11) "Ref changed"
  148. Warning: Undefined variable $u2 in %s on line %d
  149. Warning: Undefined variable $u2 in %s on line %d
  150. string(11) "Ref changed"
  151. NULL
  152. string(12) "Ref1 changed"
  153. string(12) "Ref2 changed"
  154. ---- Pass by ref / pass by val: static method calls ----
  155. Warning: Undefined variable $u1 in %s on line %d
  156. Warning: Undefined variable $u1 in %s on line %d
  157. NULL
  158. string(11) "Ref changed"
  159. Warning: Undefined variable $u1 in %s on line %d
  160. Warning: Undefined variable $u2 in %s on line %d
  161. Warning: Undefined variable $u1 in %s on line %d
  162. Warning: Undefined variable $u2 in %s on line %d
  163. NULL
  164. NULL
  165. Warning: Undefined variable $u1 in %s on line %d
  166. Warning: Undefined variable $u1 in %s on line %d
  167. NULL
  168. string(11) "Ref changed"
  169. Warning: Undefined variable $u2 in %s on line %d
  170. Warning: Undefined variable $u2 in %s on line %d
  171. string(11) "Ref changed"
  172. NULL
  173. string(12) "Ref1 changed"
  174. string(12) "Ref2 changed"
  175. ---- Pass by ref / pass by val: instance method calls ----
  176. Warning: Undefined variable $u1 in %s on line %d
  177. Warning: Undefined variable $u1 in %s on line %d
  178. NULL
  179. string(11) "Ref changed"
  180. Warning: Undefined variable $u1 in %s on line %d
  181. Warning: Undefined variable $u1 in %s on line %d
  182. NULL
  183. string(11) "Ref changed"
  184. Warning: Undefined variable $u1 in %s on line %d
  185. Warning: Undefined variable $u2 in %s on line %d
  186. Warning: Undefined variable $u1 in %s on line %d
  187. Warning: Undefined variable $u2 in %s on line %d
  188. NULL
  189. NULL
  190. Warning: Undefined variable $u1 in %s on line %d
  191. Warning: Undefined variable $u1 in %s on line %d
  192. NULL
  193. string(11) "Ref changed"
  194. Warning: Undefined variable $u2 in %s on line %d
  195. Warning: Undefined variable $u2 in %s on line %d
  196. string(11) "Ref changed"
  197. NULL
  198. string(12) "Ref1 changed"
  199. string(12) "Ref2 changed"