diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /Zend/tests/closure_044.phpt | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'Zend/tests/closure_044.phpt')
-rw-r--r-- | Zend/tests/closure_044.phpt | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Zend/tests/closure_044.phpt b/Zend/tests/closure_044.phpt new file mode 100644 index 0000000..d2644c0 --- /dev/null +++ b/Zend/tests/closure_044.phpt @@ -0,0 +1,78 @@ +--TEST-- +Closure 044: Scope/bounding combination invariants; non static closures +--FILE-- +<?php +/* A non-static closure has a bound instance if it has a scope + * and does't have an instance if it has no scope */ + +$nonstaticUnscoped = function () { var_dump(isset(A::$priv)); var_dump(isset($this)); }; + +class A { + private static $priv = 7; + function getClosure() { + return function() { var_dump(isset(A::$priv)); var_dump(isset($this)); }; + } +} + +$a = new A(); +$nonstaticScoped = $a->getClosure(); + +echo "Before binding", "\n"; +$nonstaticUnscoped(); echo "\n"; +$nonstaticScoped(); echo "\n"; + +echo "After binding, null scope, no instance", "\n"; +$d = $nonstaticUnscoped->bindTo(null, null); $d(); echo "\n"; +$d = $nonstaticScoped->bindTo(null, null); $d(); echo "\n"; + +echo "After binding, null scope, with instance", "\n"; +$d = $nonstaticUnscoped->bindTo(new A, null); $d(); echo "\n"; +$d = $nonstaticScoped->bindTo(new A, null); $d(); echo "\n"; + +echo "After binding, with scope, no instance", "\n"; +$d = $nonstaticUnscoped->bindTo(null, 'A'); $d(); echo "\n"; +$d = $nonstaticScoped->bindTo(null, 'A'); $d(); echo "\n"; + +echo "After binding, with scope, with instance", "\n"; +$d = $nonstaticUnscoped->bindTo(new A, 'A'); $d(); echo "\n"; +$d = $nonstaticScoped->bindTo(new A, 'A'); $d(); echo "\n"; + +echo "Done.\n"; + +--EXPECTF-- +Before binding +bool(false) +bool(false) + +bool(true) +bool(true) + +After binding, null scope, no instance +bool(false) +bool(false) + +bool(false) +bool(false) + +After binding, null scope, with instance +bool(false) +bool(true) + +bool(false) +bool(true) + +After binding, with scope, no instance +bool(true) +bool(false) + +bool(true) +bool(false) + +After binding, with scope, with instance +bool(true) +bool(true) + +bool(true) +bool(true) + +Done. |