为什么这行Symfony代码在DateTime()
之前有反斜杠?
$this->updated_datetime = new \DateTime();
我很确定这与NameSpaces有关,但有人可以确认/澄清...
答案 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