Annotation of embedaddon/php/Zend/tests/closure_044.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Closure 044: Scope/bounding combination invariants; non static closures
3: --FILE--
4: <?php
5: /* A non-static closure has a bound instance if it has a scope
6: * and does't have an instance if it has no scope */
7:
8: $nonstaticUnscoped = function () { var_dump(isset(A::$priv)); var_dump(isset($this)); };
9:
10: class A {
11: private static $priv = 7;
12: function getClosure() {
13: return function() { var_dump(isset(A::$priv)); var_dump(isset($this)); };
14: }
15: }
16:
17: $a = new A();
18: $nonstaticScoped = $a->getClosure();
19:
20: echo "Before binding", "\n";
21: $nonstaticUnscoped(); echo "\n";
22: $nonstaticScoped(); echo "\n";
23:
24: echo "After binding, null scope, no instance", "\n";
25: $d = $nonstaticUnscoped->bindTo(null, null); $d(); echo "\n";
26: $d = $nonstaticScoped->bindTo(null, null); $d(); echo "\n";
27:
28: echo "After binding, null scope, with instance", "\n";
29: $d = $nonstaticUnscoped->bindTo(new A, null); $d(); echo "\n";
30: $d = $nonstaticScoped->bindTo(new A, null); $d(); echo "\n";
31:
32: echo "After binding, with scope, no instance", "\n";
33: $d = $nonstaticUnscoped->bindTo(null, 'A'); $d(); echo "\n";
34: $d = $nonstaticScoped->bindTo(null, 'A'); $d(); echo "\n";
35:
36: echo "After binding, with scope, with instance", "\n";
37: $d = $nonstaticUnscoped->bindTo(new A, 'A'); $d(); echo "\n";
38: $d = $nonstaticScoped->bindTo(new A, 'A'); $d(); echo "\n";
39:
40: echo "Done.\n";
41:
42: --EXPECTF--
43: Before binding
44: bool(false)
45: bool(false)
46:
47: bool(true)
48: bool(true)
49:
50: After binding, null scope, no instance
51: bool(false)
52: bool(false)
53:
54: bool(false)
55: bool(false)
56:
57: After binding, null scope, with instance
58: bool(false)
59: bool(true)
60:
61: bool(false)
62: bool(true)
63:
64: After binding, with scope, no instance
65: bool(true)
66: bool(false)
67:
68: bool(true)
69: bool(false)
70:
71: After binding, with scope, with instance
72: bool(true)
73: bool(true)
74:
75: bool(true)
76: bool(true)
77:
78: Done.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>