在Symfony 2中,这一行意味着什么:
$task->setDueDate(new \DateTime('tomorrow'));
\DateTime
表示什么?可以从任何地方访问吗?
答案 0 :(得分:34)
首先是一个小的FYI,这与Symfony没有任何关系 - 只是Symfony2使用namespaces。
当不使用名称空间时,datetime class始终可以通过new DateTime()
使用 - 这是因为您已经在“根”名称空间中。但是,当您使用命名空间时,只需使用new DateTime()
就行不通,因为它会在当前命名空间中查找该类。例如:
<?php
namespace MyApp\Component;
class Something
{
function __construct()
{
$dt = new DateTime();
}
}
这将导致错误(例如Class 'MyApp\Component\DateTime' not found in ...
),因为名为DateTime的MyApp\Component
命名空间中没有类。
这就是为什么你找到了\DateTime()
,它告诉解释器查看类DateTime
的“root”(?)命名空间。
您还可以使用use
关键字导入DateTime
类 - 您的脚本顶部会显示 - 这样您就可以拨打new DateTime()
:
<?php
namespace MyApp\Component;
use \DateTime;
答案 1 :(得分:3)
请参阅http://www.php.net/manual/en/language.namespaces.global.php
您还应该在文件顶部看到namespace X\Y;
,\DateTime
表示要从全局命名空间中取代DateTime
类,而不是X\Y
答案 2 :(得分:2)
正如其他人所说,它引用了全局命名空间,并且DateTime集成在php中,请看这里: http://www.php.net/manual/en/class.datetime.php 所以你不仅可以在symfony中使用它;)
答案 3 :(得分:1)
\ DateTime是一个命名空间的DateTime类。你可能正在查看文件顶部的某个地方有一个使用\ X \ X减速。 \ DateTime应该可以在任何可以声明使用\ X \ X
的地方访问