在 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 的任何地方访问