在函数中找不到PHP全局变量

时间:2011-03-31 06:52:41

标签: php

  

可能重复:
  Global variables in PHP

我有一个类似

的PHP脚本
global $var1;

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

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

2 个答案:

答案 0 :(得分:4)

  

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

PHP中的函数获得自己的变量范围。获取全局范围变量的唯一方法是直接请求它们。

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

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

答案 1 :(得分:1)

反过来了。

$var1 = new StdClass();

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

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