Annotation of embedaddon/php/Zend/tests/closure_043.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Closure 043: Scope/bounding combination invariants; static closures
! 3: --FILE--
! 4: <?php
! 5: /* Whether it's scoped or not, a static closure cannot have
! 6: * a bound instance. It should also not be automatically converted
! 7: * to a non-static instance when attempting to bind one */
! 8:
! 9: $staticUnscoped = static function () { var_dump(isset(A::$priv)); var_dump(isset($this)); };
! 10:
! 11: class A {
! 12: private static $priv = 7;
! 13: static function getStaticClosure() {
! 14: return static function() { var_dump(isset(A::$priv)); var_dump(isset($this)); };
! 15: }
! 16: }
! 17:
! 18: $staticScoped = A::getStaticClosure();
! 19:
! 20: echo "Before binding", "\n";
! 21: $staticUnscoped(); echo "\n";
! 22: $staticScoped(); echo "\n";
! 23:
! 24: echo "After binding, null scope, no instance", "\n";
! 25: $d = $staticUnscoped->bindTo(null, null); $d(); echo "\n";
! 26: $d = $staticScoped->bindTo(null, null); $d(); echo "\n";
! 27:
! 28: echo "After binding, null scope, with instance", "\n";
! 29: $d = $staticUnscoped->bindTo(new A, null); $d(); echo "\n";
! 30: $d = $staticScoped->bindTo(new A, null); $d(); echo "\n";
! 31:
! 32: echo "After binding, with scope, no instance", "\n";
! 33: $d = $staticUnscoped->bindTo(null, 'A'); $d(); echo "\n";
! 34: $d = $staticScoped->bindTo(null, 'A'); $d(); echo "\n";
! 35:
! 36: echo "After binding, with scope, with instance", "\n";
! 37: $d = $staticUnscoped->bindTo(new A, 'A'); $d(); echo "\n";
! 38: $d = $staticScoped->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(false)
! 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:
! 59: Warning: Cannot bind an instance to a static closure in %s on line %d
! 60: bool(false)
! 61: bool(false)
! 62:
! 63:
! 64: Warning: Cannot bind an instance to a static closure in %s on line %d
! 65: bool(false)
! 66: bool(false)
! 67:
! 68: After binding, with scope, no instance
! 69: bool(true)
! 70: bool(false)
! 71:
! 72: bool(true)
! 73: bool(false)
! 74:
! 75: After binding, with scope, with instance
! 76:
! 77: Warning: Cannot bind an instance to a static closure in %s on line %d
! 78: bool(true)
! 79: bool(false)
! 80:
! 81:
! 82: Warning: Cannot bind an instance to a static closure in %s on line %d
! 83: bool(true)
! 84: bool(false)
! 85:
! 86: Done.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>