我在我正在处理的一个 PHP 文件的顶部看到以下代码。
use DateTime, DateTimeZone;
这段代码是无用的还是我遗漏了什么?
开发人员这样做是为了让他们的生活更轻松,并且在命名空间中工作时代码更漂亮。稍微解释一下...
您使用命名空间来防止与不同框架可能发生的命名冲突。假设您在命名空间“MyApp”中工作。现在,因为您现在位于命名空间内,所以不能使用没有前导 '\' 的 php 原生类,因为这些原生类存在于全局命名空间中(您在类名之前用 '\' 标识)。因此,如果您需要使用本机 DateTime 类,则必须将其与反斜杠 - \DateTime 一起使用。
但是,如果您知道要使用它们,也可以从其他命名空间导入它们——通过在命名空间声明后使用use关键字。这样,您不必使用要使用的类的完整命名空间名称,而只需使用类名本身,因为您习惯于在没有命名空间的情况下工作。
说
namespace MyApp;
use DateTime;
将 \DateTime 类导入您的 MyApp 命名空间,有效地允许您在代码中只使用 DateTime。
您应该在php 的网站上阅读有关命名空间的更多信息。关于命名空间的内容比我在这篇文章中所能涵盖的要多。
据推测,有问题的文件位于其自己的名称空间下。
使用它是为了您不必\DateTime
在代码中使用它。
这段代码是因为源文件很可能也包含一个namespace
定义。\
这意味着您只能在该namespace
定义之后使用前导访问内置类:
喜欢:
namespace Foo;
$dt = new \DateTime();
为了防止自己键入前导\
代码或为了使包含一些遗留代码成为可能,他们给类起别名