PHP从类方法访问全局范围内的函数

时间:2013-07-02 23:17:14

标签: php class function methods global

我有以下简单的代码:

$a = 'hello';

function myfunc() {
    echo 'in myfunc';
}

class myclass {
    function __construct() {
        myfunc();
        echo $a;
    }
}

$m1 = new myclass();

方法中的echo $ a给出了一个错误,因为$ a在全局范围内,并且在没有首先将其声明为全局的情况下无法从类中访问。这在PHP手册中有记录。

对myfunc()的调用确实有效,我不明白为什么。它也在全局范围内声明,但该方法可以在不首先将其声明为全局的情况下访问它。我似乎无法在PHP手册中找到解释其原因的原因。

也许我已经花了很长时间做PHP,这很简单我忘了它是如何工作的。任何见解或指向PHP手册中的哪些内容,您都可以从类方法中访问全局函数。

提前谢谢。

2 个答案:

答案 0 :(得分:4)

函数不是作用域的(除非您使用名称空间)。只有方法在各个类和变量中都有。

它应该起作用;一切都是正确的:你可以从任何地方调用函数,一旦定义了。

答案 1 :(得分:2)

我不确定这是否是命名空间的新东西......

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

  

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