我有以下简单代码:
$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手册中提到的可以从类方法中访问全局函数的任何见解或链接都将不胜感激。
提前谢谢。
函数没有作用域(除非使用命名空间)。只有方法在类和变量中。
它应该起作用;一切都是正确的:一旦定义好,就可以从任何地方调用函数。
我不确定这是否是名称空间的新事物。。。
http://www.php.net/manual/en/language.namespaces.fallback.php
区块报价对于函数和常量,如果不存在命名空间函数或常量,PHP将返回全局函数或常量。