【问题标题】:PHP global variable not found in functions [duplicate]在函数中找不到PHP全局变量[重复]
【发布时间】:2011-03-31 06:52:40
【问题描述】:

可能重复:
Global variables in PHP

我有一个类似的 PHP 脚本

global $var1;

function func1() {
    $var1->something(); // $var1 not found ... why?
}

我必须在每个函数中执行 global $var1 吗?

【问题讨论】:

  • 说真的,你们有没有像在stackoverflow.com/questions/ask-advice 中那样询问您的问题之前。就在 9 小时前问了同样的事情,这也是许多人的重复。提问前请做好功课。

标签: php


【解决方案1】:

我必须在每个函数中执行 global $var1 吗?

是的。

PHP 中的函数有自己的变量范围。访问全局范围内的变量的唯一方法是直接请求它们。

我相信您会理解这会如何导致难以阅读的意大利面条式代码。尽可能避免使用全局变量。

如果您正在构建 OO 代码,请考虑使用 a Registry(命名空间集合)和/或 Dependency Injection(在构造函数中传递新对象所需的对象)。

【讨论】:

  • 我宁愿将注册表称为命名空间全局,因为如果您静态访问它就是这样。与仅使用 $GLOBALS 或使用 global 关键字导入数组的问题相同。见stackoverflow.com/questions/5283102/…
【解决方案2】:

情况正好相反。

$var1 = new StdClass();

function func1() {
    global $var1
    $var1->something(); // $var1 not found ... why?
}
`

是的,您确实需要在您声明的每个函数中都以这种方式调用它。

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多