将常量保留在命名空间内

时间:2015-04-15 11:14:13

标签: php wordpress

我想将我定义的常量保留在我的Wordpress插件的范围内,因为我认为除非必要,否则插件不应该填满全局命名空间。

我的结构如下:

namespace pluginname;
namespace pluginname\setup;
namespace pluginname\helpers;

etc...

我尝试过:

define('pluginname\var', 'foo');

然后在子命名空间中执行:

use pluginname;

但这并没有将常数纳入范围。这是正确的方法,但语法错误,反之亦然?

我应该创建一个静态定义类吗?我来自.NET背景,并且对PHP名称空间和范围的实现感到有些困惑。

首选方法是什么?

1 个答案:

答案 0 :(得分:0)

您不能使用use导入名称空间中的常量(FAQ)。

以下是一个可以理解的示例:

namespace pluginname { // pluginname
    define(__NAMESPACE__ . '\TEST', 'This my test constant.'.PHP_EOL);
    echo TEST;
}

namespace pluginname\setup { // pluginname\setup
    echo \pluginname\TEST;
}

namespace pluginname\helpers { // pluginname\helpers
    echo \pluginname\TEST;
}

namespace { // global
    echo pluginname\TEST;
    echo TEST;
}

这将打印:

This my test constant.
This my test constant.
This my test constant.
This my test constant.
TEST