使用动态名称访问命名空间内的常量


Access constants inside namespace with a dynamic name

假设我有两个带有名称空间的php文件:

第一:

# src/one.php
namespace foo'one;
const SOME_VALUE = "value 1";

第二个:

# src/two.php
namespace foo'two;
const SOME_VALUE = "value 2";

我想做的事:

require_once "src/one.php";
require_once "src/two.php";
foreach(["one", "two"] as $ns_type) {
    echo foo'$ns_type'SOME_VALUE;
}

显然它不是那样工作的。我一直在看医生的,可能找不到正确的方法。

我找到的唯一解决方案是向每个命名空间添加一个函数,用它的名称构造一个字符串,然后调用它

$func = "foo'$ns_name'get_my_constant";
$func();

所以问题仍然存在,如果没有helper函数,我如何访问命名空间常量
P.S常量名称对于每个文件都是相同的

如果您需要按常量的动态名称打印常量值,您可以尝试以下操作:

echo constant("foo''$ns_type'SOME_VALUE");

在你的前臂环。