似乎有不同的方法将常量放入命名空间中,并根据其定义方式选择显示它们的方式。
简要概述:
如果我定义了一个常量并使用namespace user;
,那么我无法使用\user\CONSTANT
来访问它。
如果使用命名空间名定义一个常量,例如define('user\USERNAME', 'James')
,则不需要使用namespace user;
,可以通过两种方式访问常量-使用namespace user;
和user\USERNAME
。
示例:
注意:
所有示例都包括测试文件中使用的全部代码(如果前一个示例的代码缺失,那是因为它在新测试中没有被使用)
define.php
namespace user;
define('USERNAME', 'James');
include 'display.php';
display.php
namespace user;
echo USERNAME; // Displays "James"
// This will NOT work (Fatal error: Undefined constant)
echo \user\USERNAME;
然而,我可以通过以下方式在命名空间中设置常量:
define.php
define('user\USERNAME', 'James');
include 'display.php';
现在我有两种方法来显示常量: display.php
namespace user;
echo USERNAME; // Displays "James"
AND
display.php
echo \user\USERNAME; // Displays "James"
两种方式都可以正常显示“James”。
我的问题
我不是在问你喜欢哪种方法等等,而是这两种方法有没有问题?
是否有一种方法由于性能更好(认为微秒很无聊),或者是否有一种方法会在PHP的其他地方引起问题?
我知道如果不像这样明确设置命名空间,例如namespace user;
,那么就无法将该文件中的其他内容设置为该命名空间,如果我只想在命名空间中使用常量,则这样做也可以接受。
这只是一种取决于场景的选择,还是有一种方法存在某些问题?
define.php
中使用namespace user;
。实际上,我应该看到了这一点:(干杯 - James