我想将我定义的常量保留在我的Wordpress插件的范围内,因为我认为除非必要,否则插件不应该填满全局命名空间。
我的结构如下:
namespace pluginname;
namespace pluginname\setup;
namespace pluginname\helpers;
etc...
我尝试过:
define('pluginname\var', 'foo');
然后在子命名空间中执行:
use pluginname;
但这并没有将常数纳入范围。这是正确的方法,但语法错误,反之亦然?
我应该创建一个静态定义类吗?我来自.NET背景,并且对PHP名称空间和范围的实现感到有些困惑。
首选方法是什么?
答案 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