Symfony:为什么在\ DateTime()中反斜杠;

Sno*_*ash 4 symfony

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

$this->updated_datetime = new \DateTime();
Run Code Online (Sandbox Code Playgroud)

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

Sta*_*hyn 13

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

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

namespace MyCompany\MyBundle\MyController;

use \DateTime;

$d = new DateTime();
Run Code Online (Sandbox Code Playgroud)

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

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

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

看看这个页面:http: //php.net/manual/en/language.namespaces.global.php