我在其中一个PHP文件的顶部看到以下代码。
use DateTime, DateTimeZone;
这段代码是无用的还是我缺少的东西?
答案 0 :(得分:2)
开发人员这样做是为了让他们的生活更轻松,并且在命名空间内工作时代码更漂亮。解释一下......
您使用命名空间来防止可能与不同框架的命名冲突。假设您在命名空间“MyApp”中工作。现在,因为您现在位于命名空间内,所以不能使用没有前导'\'的php的本机类,因为这些本机类存在于global namespace中(在类名之前用'\'表示)。因此,如果您需要使用本机DateTime类,则必须使用反斜杠 - \ DateTime。
但是,如果您知道要使用它们,也可以从其他命名空间导入内容 - 在命名空间声明后使用 use 关键字。这样,您不必使用您将要使用的类的完整命名空间名称,而只需使用您不习惯使用的类名称本身。
说
namespace MyApp;
use DateTime;
将\ DateTime类导入MyApp命名空间,有效地允许您在代码中使用DateTime。
您应该在php's website上阅读有关命名空间的更多信息。关于名称空间的内容比我在这篇文章中可能涉及的内容还要多。
答案 1 :(得分:1)
据推测,有问题的文件位于其自己的命名空间内。
使用它以便您不必在代码中使用\DateTime
。
答案 2 :(得分:1)
此代码是因为源文件可能还包含namespace
定义。这意味着您只能在\
定义之后使用前导namespace
访问内置类:
像:
namespace Foo;
$dt = new \DateTime();
为了防止自己键入前导\
或者为了能够包含一些遗留代码,他们将这些类别化了