【问题标题】:Are PHP namespaces used with a leading slashPHP 命名空间是否与前导斜杠一起使用
【发布时间】:2013-05-08 02:14:03
【问题描述】:

当使用PHP命名空间时,你是否像这样使用它们:

\Foo\Bar->method()

Foo\Bar->method()

请注意,区别只是一个前导斜杠。还是两者都有效,但含义不同?

谢谢。

【问题讨论】:

标签: php namespaces


【解决方案1】:

前导\ 的用法类似于文件系统中的绝对路径和相对路径。最好用代码解释:

namespace test;
$dt = new DateTime();

失败,因为我们使用的是相对路径(没有前导 \)和当前命名空间 test。而且这个虚构的命名空间中没有 DateTime 类。

namespace test;
$dt = new \DateTime();

就像我们使用绝对命名空间路径一样工作。因为DateTime 在全局命名空间\ 中,所以会被找到。

PHP manual about namespaces中查找更多信息

【讨论】:

    【解决方案2】:

    这取决于您的需求。

    \Foo\Bar::method(); // will search class in root namespace
    

    Foo\Bar::method(); // will search class in current namespace
    

    两个表达式都有效。但做不同的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 2012-01-11
      相关资源
      最近更新 更多