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

时间:2015-12-29 13:47:13

标签: php namespaces

假设我有两个带有命名空间的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();

所以问题仍然存在,如何在没有帮助函数的情况下访问命名空间常量? 每个文件的P.S 常量名称相同

1 个答案:

答案 0 :(得分:2)

如果您需要使用动态名称打印常量值,可以尝试:

echo constant("foo\\$ns_type\SOME_VALUE");
在你的foreach循环中