gpt4 book ai didi

php - BackSlash(\),PHP 中命名空间别名中的命名空间分隔符

转载 作者:行者123 更新时间:2023-12-04 16:52:29 26 4
gpt4 key购买 nike

我一直在阅读 Using namespaces: Aliasing/Importing在 PHP 中。有两件事我不明白。

它说,

Note that for namespaced names (fully qualified namespace names containing namespace separator, such as Foo\Bar as opposed to global names that do not, such as FooBar), the leading backslash is unnecessary and not recommended, as import names must be fully qualified, and are not processed relative to the current namespace.



有人可以解释一下吗
  • 这是什么意思?
  • 使用命名空间别名的目的是什么?鉴于我知道使用命名空间的目的。
  • 最佳答案

    这是什么意思?

    它真的意味着它在 example 中所说和显示的内容。 .导入命名空间类时,应省略第一个反斜杠:

    use My\Full\Classname as Another;    // recommended
    use \My\Full\Classname as Another; // not recommended

    原因是 use期待 fully qualified namespace .您不能使用相对路径。换句话说,如果您在 My\命名空间已经,你不能 use Full\Classname .

    目的是什么?

    the first chapter 中有解释实际上:

    In the PHP world, namespaces are designed to solve two problems that authors of libraries and applications encounter when creating re-usable code elements such as classes or functions:

    • Name collisions between code you create, and internal PHP classes/functions/constants or third-party classes/functions/constants.
    • Ability to alias (or shorten) Extra_Long_Names designed to alleviate the first problem, improving readability of source code.


    因此,目的是缩短和/或避免冲突,例如当您有两个名为 Foo 的类并且需要同时使用这两个类时,您必须有一种方法来解决该冲突(至少如果您不想每次都使用完全限定名称):
    use My\Very\Long\Namespaced\Class\Named\Foo as Foo;
    use My\Other\Foo as OtherFoo;

    然后你可以使用
    $foo = new Foo;
    $otherFoo = new OtherFoo;

    所以这很简短,不会冲突。真的没有更多了。

    关于php - BackSlash(\),PHP 中命名空间别名中的命名空间分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738012/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com