【问题标题】:Symfony: why the backslash in \DateTime(); [duplicate]Symfony:为什么 \DateTime() 中的反斜杠; [复制]
【发布时间】:2017-05-17 19:13:37
【问题描述】:

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

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

我很确定这与命名空间有关,但有人可以确认/澄清...

【问题讨论】:

    标签: symfony


    【解决方案1】:

    因为它使 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

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2022-11-01
      • 2012-03-13
      • 2017-02-25
      • 2019-01-28
      • 1970-01-01
      相关资源
      最近更新 更多