【问题标题】:Is the global namespace prefix only required for classes?全局命名空间前缀是否仅对类需要?
【发布时间】:2014-04-10 07:29:29
【问题描述】:

我试图弄清楚命名空间在 PHP 中是如何工作的,但很难理解何时需要全局命名空间前缀。举个例子:

index.php

namespace MySpace;

require_once 'file.php';

Test::hello();

hi();

文件.php

class Test {
    public static function hello () {
        echo 'hello';
    }
}

function hi() {
    echo 'hi';
}

这行不通,但写 \Test::hello() 会并回显“hello”和“hi”。

为什么 hi() 也不需要 \?

【问题讨论】:

    标签: php namespaces


    【解决方案1】:

    http://php.net/manual/en/language.namespaces.fallback.php

    使用命名空间:回退到全局函数/常量

    在命名空间内,当 PHP 在类中遇到不合格的名称时 名称、函数或常量上下文,它用不同的方式解决这些问题 优先事项。 类名总是解析为当前的命名空间名。 因此,要访问内部或非命名空间的用户类,必须参考 以他们的完全限定名称 [...]

    对于函数和常量,PHP 将回退到全局函数或 常量 如果命名空间函数或常量不存在。

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2015-03-19
      • 2019-07-14
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2011-09-04
      • 2016-12-01
      相关资源
      最近更新 更多