0

我在我正在处理的一个 PHP 文件的顶部看到以下代码。

use DateTime, DateTimeZone;

这段代码是无用的还是我遗漏了什么?

4

3 回答 3

2

开发人员这样做是为了让他们的生活更轻松,并且在命名空间中工作时代码更漂亮。稍微解释一下...

您使用命名空间来防止与不同框架可能发生的命名冲突。假设您在命名空间“MyApp”中工作。现在,因为您现在位于命名空间内,所以不能使用没有前导 '\' 的 php 原生类,因为这些原生类存在于全局命名空间中(您在类名之前用 '\' 标识)。因此,如果您需要使用本机 DateTime 类,则必须将其与反斜杠 - \DateTime 一起使用。

但是,如果您知道要使用它们,也可以从其他命名空间导入它们——通过在命名空间声明后使用use关键字。这样,您不必使用要使用的类的完整命名空间名称,而只需使用类名本身,因为您习惯于在没有命名空间的情况下工作。

namespace MyApp;
use DateTime;

将 \DateTime 类导入您的 MyApp 命名空间,有效地允许您在代码中只使用 DateTime。

您应该在php 的网站上阅读有关命名空间的更多信息。关于命名空间的内容比我在这篇文章中所能涵盖的要多。

于 2013-07-15T20:01:15.903 回答
1

据推测,有问题的文件位于其自己的名称空间下。

使用它是为了您不必\DateTime在代码中使用它。

于 2013-07-15T19:43:49.287 回答
1

这段代码是因为源文件很可能也包含一个namespace定义。\这意味着您只能在该namespace定义之后使用前导访问内置类:

喜欢:

namespace Foo;

$dt = new \DateTime();

为了防止自己键入前导\代码或为了使包含一些遗留代码成为可能,他们给类起别名

于 2013-07-15T19:44:10.917 回答