【问题标题】:PHP Accessing function in global scope from a class methodPHP从类方法访问全局范围内的函数
【发布时间】:2013-06-30 12:19:51
【问题描述】:

我有以下简单代码:

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

提前致谢。

【问题讨论】:

  • 我建议您接受@bwoebi 的回答,因为它最能解决您的问题:)

标签: php class function methods global


【解决方案1】:

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

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

【讨论】:

  • 谢谢。我只是在文档中找不到任何内容,但很高兴知道它就是这么简单。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2015-04-18
    • 2013-06-21
    • 1970-01-01
    • 2017-09-24
    • 2017-01-20
    • 2019-10-17
    • 1970-01-01
    相关资源
    最近更新 更多