Symfony:为什么在\ DateTime();

时间:2017-01-03 16:21:47

标签: symfony

为什么这行Symfony代码在DateTime()之前有反斜杠?

$this->updated_datetime = new \DateTime();

我很确定这与NameSpaces有关,但有人可以确认/澄清...

1 个答案:

答案 0 :(得分:13)

因为它使php以这种方式引用根(全局)命名空间。

您还可以先使用 DateTime,然后不使用斜杠:

namespace MyCompany\MyBundle\MyController;

use \DateTime;

$d = new DateTime();

假设您正在使用位于 MyCompany \ MyBundle \ MyController 命名空间下的控制器。那么当您尝试创建新的DateTime实例时会发生什么?

Autoloader尝试在同一名称空间下找到它,即它查找具有完全限定名称 MyCompany \ MyBundle \ MyController \ DateTime 的类。结果 - 你得到一个" 尝试从命名空间加载类...... "异常。

这就是你需要添加斜杠的原因 - 它使php在全局命名空间而不是本地命名空间中查找类。

查看此页面: http://php.net/manual/en/language.namespaces.global.php