6

我有以下简单的代码:

$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 手册中说您可以从类方法中访问全局函数的位置将不胜感激。

提前致谢。

4

2 回答 2

5

函数没有作用域(除非您使用命名空间)。只有方法在类和变量中无处不在。

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

于 2013-07-02T23:20:34.957 回答
4

我不确定这是否是命名空间的新事物......

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

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

于 2013-07-02T23:25:41.713 回答