我有以下简单的代码:
$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手册中的哪些内容,您都可以从类方法中访问全局函数。
提前谢谢。答案 0 :(得分:4)
函数不是作用域的(除非您使用名称空间)。只有方法在各个类和变量中都有。
它应该起作用;一切都是正确的:你可以从任何地方调用函数,一旦定义了。
答案 1 :(得分:2)
我不确定这是否是命名空间的新东西......
http://www.php.net/manual/en/language.namespaces.fallback.php
块引用 对于函数和常量,如果不存在命名空间函数或常量,PHP将回退到全局函数或常量。