【发布时间】:2013-05-08 02:14:03
【问题描述】:
当使用PHP命名空间时,你是否像这样使用它们:
\Foo\Bar->method()
或
Foo\Bar->method()
请注意,区别只是一个前导斜杠。还是两者都有效,但含义不同?
谢谢。
【问题讨论】:
-
第一是global namespace(语法固定)。
标签: php namespaces
当使用PHP命名空间时,你是否像这样使用它们:
\Foo\Bar->method()
或
Foo\Bar->method()
请注意,区别只是一个前导斜杠。还是两者都有效,但含义不同?
谢谢。
【问题讨论】:
标签: php namespaces
前导\ 的用法类似于文件系统中的绝对路径和相对路径。最好用代码解释:
namespace test;
$dt = new DateTime();
失败,因为我们使用的是相对路径(没有前导 \)和当前命名空间 test。而且这个虚构的命名空间中没有 DateTime 类。
namespace test;
$dt = new \DateTime();
就像我们使用绝对命名空间路径一样工作。因为DateTime 在全局命名空间\ 中,所以会被找到。
在PHP manual about namespaces中查找更多信息
【讨论】:
这取决于您的需求。
\Foo\Bar::method(); // will search class in root namespace
或
Foo\Bar::method(); // will search class in current namespace
两个表达式都有效。但做不同的事情。
【讨论】: