php-src/Zend/tests/closure_044.phpt
Peter Kokot d679f02295 Sync leading and final newlines in *.phpt sections
This patch adds missing newlines, trims multiple redundant final
newlines into a single one, and trims redundant leading newlines in all
*.phpt sections.

According to POSIX, a line is a sequence of zero or more non-' <newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.

C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."

Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
2018-10-15 04:33:09 +02:00

78 lines
1.7 KiB
PHP

--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 doesn'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";
--EXPECT--
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.