【发布时间】:2013-11-13 11:19:35
【问题描述】:
我在使用命名空间中的常量时遇到了一些问题。如果我定义常量并尝试使用它,PHP 似乎无法找到它。例如,在我的带有常量的文件中,我有如下代码:
namespace \my\namespace\for\constants;
const DS = DIRECTORY_SEPARATOR;
然后在我的消费文件中:
namespace \some\other\namespace;
use \my\namespace\for\constants\DS as DS;
echo (realpath (DS . 'usr' . DS 'local'));
但是,我没有按预期回显“/usr/local”,而是收到以下通知和一个空字符串。
注意:使用未定义的常量 DS - 假定为 'DS'
如果我将代码更改如下:
use \my\namespace\for\constants as cns;
echo (realpath (cns\DS . 'usr' . cns\DS 'local'));
我得到了预期的结果,但它显然比直接拉入常量要方便得多。
您可以在命名空间中为类/接口/特征起别名,您是否也不能为常量起别名?如果你能做到,那怎么做?
【问题讨论】:
-
命名空间和常量是不同的。
use命令映射命名空间,而不是常量。您可以使用定义宏,但我认为这种风格不好:它降低了代码的可读性,因为不清楚“DS”解析为什么,它来自哪里。
标签: php namespaces constants alias