在 Symfony 2 中,这条线是什么意思:
$task->setDueDate(new \DateTime('tomorrow'));
是什么意思\DateTime?可以从任何地方访问吗?
首先,一个小的 FYI,这与 Symfony 没有任何关系——只是碰巧 Symfony2 使用了namespaces。
当不使用命名空间时,datetime 类始终可以通过new DateTime()- 这是因为您已经在“根”命名空间中。但是,当您使用命名空间时,简单地使用new DateTime()不会起作用,因为它会在当前命名空间中查找该类。例子:
<?php
namespace MyApp\Component;
class Something
{
function __construct()
{
$dt = new DateTime();
}
}
这将导致错误(例如Class 'MyApp\Component\DateTime' not found in ...),因为MyApp\Component命名空间中没有名为 DateTime 的类。
这就是您发现的原因\DateTime(),它告诉解释器在类的“根”(?) 命名空间中查找DateTime。
您还可以使用use关键字来导入DateTime类 - 脚本的顶部看起来像 - 这允许您调用new DateTime():
<?php
namespace MyApp\Component;
use \DateTime;
见http://www.php.net/manual/en/language.namespaces.global.php
您还应该namespace X\Y;在文件顶部看到 a,这\DateTime意味着该类DateTime将从全局命名空间中获取,而不是X\Y.
正如其他所说,它引用了全局命名空间,并且 DateTime 集成在 php 中,请看这里: http ://www.php.net/manual/en/class.datetime.php 所以你不仅可以在 symfony 中使用它;)
\DateTime 是一个命名空间的 DateTime 类。您正在查看的文件顶部可能有一个使用 \X\X 减速的地方。\DateTime 应该可以在您可以声明使用 \X\X 的任何地方访问