如何防止内置PHP函数成为命名空间?

时间:2017-11-11 15:02:28

标签: php namespaces

我是PHP命名空间的新手,我所拥有的是:

namespace Foo\Bar;
class JsonAssetRest{
    static function ini(){
        $headers = getallheaders(); 
    }
}
JsonAssetRest::ini();

这就是创建错误

Uncaught Error: Call to undefined function Foo\Bar\getallheaders() in /var/www/html/class JsonAssetRest.php

如何使用getallheaders()(内置函数)而不会出现此错误?

编辑:该问题与我将代码转换为命名空间类时删除库有关。所述库为nginx定义了getallheaders。我对添加命名空间的错误消息感到困惑,并认为这是问题所在。

要考虑到其他人在调试时因错误而感到困惑。因为这些评论提高了我对PHP中命名空间的理解。

Edit2:如果有人发现此错误并想知道如何解决实际问题(getallheaders未在nginx下定义),请在此处回答:{{3 }}

2 个答案:

答案 0 :(得分:2)

可以从任何命名空间获得全局函数。您不需要像其他答案所示添加\前缀。

此错误表示在名为getallheaders()的全局或当前命名空间中没有定义任何函数。此函数是apache_response_headers()的别名,也可能不存在。我假设PHP没有作为这些函数所需的apache模块运行。

答案 1 :(得分:0)

在函数前添加反斜杠,如下所示:WordID_count

如果不在函数前添加此反斜杠,则会假定该函数与调用它的类位于同一名称空间中。添加反斜杠会使它在全局命名空间中查找该函数,该命名空间就是函数所在的位置。