PHP命名空间:\ My\Namespace或My\Namespace?

Mat*_*oli 7 php namespaces php-5.3

  • My\Namespace
    • \My\Namespace

那么,我应该使用哪一个,我看到php文档主要使用My\Namespace.

但据说它\My\Namespace更好,因为不含糊,而My\Namespace可以解决为\RandomNamespace\My\Namespace.

在阅读了Doctrine 2中有一个问题后,我开始怀疑这个问题:" 请在代码和文档中用'\ Doctrine\XXX\YYY'替换'Doctrine\XXX\YYY' "

那么,你有关于此的更多信息吗?谢谢

Kev*_*eno 5

这与使用相对与绝对文件/uri 路径没有什么不同,并且将归结为偏好。但是,与绝对路径不同,我同意不那么模糊的\My\Namespace说法,因为它永远不会中断,而相对名称空间可以。

命名空间别名,通过use添加相对命名空间名称的歧义。例如,我可以说:use \PDO as YourMom然后YourMom在代码中调用。难道\PDO\YourMOM或者YourMom它是被称为?显然别名获胜并解析为\PDO,假设没有冲突,但它使代码难以遵循。

编辑

证明歧义的代码示例是可能的。如果命名空间不合格,请确保您看到应用了全局回退

正如@netcoder 所提到的,在命名空间的声明过程中不可能有歧义。因此,namespace Mynamespace \My(或交换下面的任何其他命名空间声明)100% 相同,并且声明完全限定了命名空间。

namespace My
{
}

namespace My\Other
{
    use Bob; // Resolves to \My\Other\Bob
}

namespace My\Other\NS
{
    use \My\Other as Other;
    use Other\NS as Duh; // This resolves to \My\Other\NS
}

namespace My\Other\Bob
{
    use Other\NS as Duh; // This resolves to \Other\NS becuase the namespace doesn't exist inside \My\Other\Bob
}
Run Code Online (Sandbox Code Playgroud)