使用PHP 7.0,请考虑以下代码:
<?php
namespace A {
$closure = function() {
echo __NAMESPACE__;
};
}
namespace B {
$closure = function () {
echo __NAMESPACE__;
};
}
namespace C {
$closure();
}
Run Code Online (Sandbox Code Playgroud)
对我来说,预期的输出将是:
PHP Notice: Undefined variable: closure
Run Code Online (Sandbox Code Playgroud)
但是结果是
B
Run Code Online (Sandbox Code Playgroud)
然后考虑以下代码:
<?php
namespace A {
$closure = function() {
echo __NAMESPACE__;
};
}
namespace B {
$closure = function () {
echo __NAMESPACE__;
};
}
namespace C {
\A\$closure();
}
Run Code Online (Sandbox Code Playgroud)
现在知道(但尚未理解)第一个示例的行为,对我的预期输出将是:
A
Run Code Online (Sandbox Code Playgroud)
但是我得到了
PHP Parse error: syntax error, unexpected '$closure' (T_VARIABLE), …Run Code Online (Sandbox Code Playgroud)