小编Hak*_*iki的帖子

带有闭包的意外名称空间行为

使用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)

php closures namespaces

3
推荐指数
1
解决办法
113
查看次数

标签 统计

closures ×1

namespaces ×1

php ×1