【发布时间】:2017-05-17 19:13:37
【问题描述】:
为什么这行 Symfony 代码在DateTime() 之前有一个反斜杠?
$this->updated_datetime = new \DateTime();
我很确定这与命名空间有关,但有人可以确认/澄清...
【问题讨论】:
标签: symfony
为什么这行 Symfony 代码在DateTime() 之前有一个反斜杠?
$this->updated_datetime = new \DateTime();
我很确定这与命名空间有关,但有人可以确认/澄清...
【问题讨论】:
标签: symfony
因为它使 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
【讨论】: