【发布时间】:2015-06-02 10:10:29
【问题描述】:
似乎有不同的方法可以将常量放入命名空间,并根据它们的定义方式选择显示它们的方式。
简要概述:
如果我定义一个常量并使用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"
与
display.php
echo \user\USERNAME; // Displays "James"
两者都显示“James”就好了。
我的问题
我不是在问你喜欢什么等等,但是使用这两种方法有什么问题吗?
是因为性能更好(假设微秒如此毫无意义),还是一种方法会导致 PHP 中的其他地方出现问题?
我知道没有像namespace user; 那样显式设置命名空间意味着我在该文件中没有得到任何其他设置为命名空间的东西,如果我只想要命名空间中的常量就可以了。
这只是根据场景的选择,还是由于某种原因一种方法不好?
【问题讨论】:
标签: php namespaces constants