Annotation of embedaddon/php/tests/lang/returnByReference.008.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Returning a reference from a non-static method via another non-static method
3: --INI--
4: error_reporting = E_ALL & ~E_STRICT
5: --FILE--
6: <?php
7: class C {
8: function returnConstantByValue() {
9: return 100;
10: }
11:
12: function &returnConstantByRef() {
13: return 100;
14: }
15:
16: function &returnVariableByRef() {
17: return $GLOBALS['a'];
18: }
19:
20: function &returnFunctionCallByRef($functionToCall) {
21: return $this->$functionToCall();
22: }
23: }
24: $c = new C;
25:
26: echo "\n---> 1. Via a return by ref function call, assign by reference the return value of a function that returns by value:\n";
27: unset($a, $b);
28: $a = 4;
29: $b = &$c->returnFunctionCallByRef('returnConstantByValue');
30: $a++;
31: var_dump($a, $b);
32:
33: echo "\n---> 2. Via a return by ref function call, assign by reference the return value of a function that returns a constant by ref:\n";
34: unset($a, $b);
35: $a = 4;
36: $b = &$c->returnFunctionCallByRef('returnConstantByRef');
37: $a++;
38: var_dump($a, $b);
39:
40: echo "\n---> 3. Via a return by ref function call, assign by reference the return value of a function that returns by ref:\n";
41: unset($a, $b);
42: $a = 4;
43: $b = &$c->returnFunctionCallByRef('returnVariableByRef');
44: $a++;
45: var_dump($a, $b);
46:
47: ?>
48: --EXPECTF--
49:
50: ---> 1. Via a return by ref function call, assign by reference the return value of a function that returns by value:
51:
52: Notice: Only variable references should be returned by reference in %s on line 16
53: int(5)
54: int(100)
55:
56: ---> 2. Via a return by ref function call, assign by reference the return value of a function that returns a constant by ref:
57:
58: Notice: Only variable references should be returned by reference in %s on line 8
59: int(5)
60: int(100)
61:
62: ---> 3. Via a return by ref function call, assign by reference the return value of a function that returns by ref:
63: int(5)
64: int(5)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>