Return to closure_014.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / Zend / tests |
1.1 ! misho 1: --TEST-- ! 2: Closure 014: return by value/reference ! 3: --FILE-- ! 4: <?php ! 5: class C1 { ! 6: function __invoke() { ! 7: return 0; ! 8: } ! 9: } ! 10: class C2 { ! 11: function &__invoke(&$a) { ! 12: return $a; ! 13: } ! 14: } ! 15: class C3 { ! 16: function __invoke() { ! 17: } ! 18: } ! 19: ! 20: $x = new C1(); ! 21: var_dump($x()); ! 22: var_dump($x->__invoke()); ! 23: $x(); ! 24: $x->__invoke(); ! 25: $x = function() { ! 26: return 0; ! 27: }; ! 28: var_dump($x()); ! 29: var_dump($x->__invoke()); ! 30: $x(); ! 31: $x->__invoke(); ! 32: ! 33: $x = new C2(); ! 34: $a = $b = $c = $d = 1; ! 35: $e =& $x($a); ! 36: $e = 2; ! 37: var_dump($a); ! 38: $e =& $x->__invoke($b); ! 39: $e = 3; ! 40: var_dump($b); ! 41: $x($b); ! 42: $x->__invoke($b); ! 43: $x = function & (&$a) { ! 44: return $a; ! 45: }; ! 46: $e =& $x($c); ! 47: $e = 4; ! 48: var_dump($c); ! 49: $e =& $x->__invoke($d); ! 50: $e = 5; ! 51: var_dump($d); ! 52: $x($d); ! 53: $x->__invoke($d); ! 54: ! 55: $x = new C3(); ! 56: var_dump($x()); ! 57: var_dump($x->__invoke()); ! 58: $x(); ! 59: $x->__invoke(); ! 60: $x = function() { ! 61: }; ! 62: var_dump($x()); ! 63: var_dump($x->__invoke()); ! 64: $x(); ! 65: $x->__invoke(); ! 66: ?> ! 67: --EXPECT-- ! 68: int(0) ! 69: int(0) ! 70: int(0) ! 71: int(0) ! 72: int(2) ! 73: int(3) ! 74: int(4) ! 75: int(5) ! 76: NULL ! 77: NULL ! 78: NULL ! 79: NULL