如何在函数中引用全局稳定的PHP对象?

如何在函数中引用全局稳定的PHP对象?,php,object,reference,Php,Object,Reference,以前,我有一个全局数组($v),并使用全局$v;从函数中引用它;。现在我想封装关于该数组的所有内容,所以我编写了一个类。在全局上下文中,我实例化该类: $vi = new my_v(); 在函数中,我想调用该对象的方法: function f($x) { $vi->add($x); } 如何在函数中引用$vi?使用全局关键字: function f($x) { global $vi; $vi->add($x); } 您还可以使用$GLOBALS超全局数组: func

以前,我有一个全局数组($v),并使用全局$v;从函数中引用它;。现在我想封装关于该数组的所有内容,所以我编写了一个类。在全局上下文中,我实例化该类:

$vi = new my_v();
在函数中,我想调用该对象的方法:

function f($x) {
  $vi->add($x);
}

如何在函数中引用$vi?

使用全局关键字:

function f($x) {
  global $vi;
  $vi->add($x);
}
您还可以使用
$GLOBALS
超全局数组:

function f($x) {
  $GLOBALS['vi']->add($x);
}
见:


工作示例:

的可能重复顺便说一句,我知道该类很好,因为对全局作用域中add()方法的调用工作得很好。我很难为情地说抛出的错误是副作用的结果。全局$vi确实可以工作。这是我的想法,但PHP(5.2.17)给了我致命的错误:在…@willfaste中对非对象调用成员函数add(),听起来你的类没有正确设置。在没有其他代码的情况下设置一个非常简单的测试用例。@willfaste您可以在这个工作示例中看到这两个选项:。如果它对您不起作用,那么您的代码还有一些其他问题。我非常感谢3v4l.org的提示。代码在那里有效,但在我的网站上不起作用,所以你是对的,还有一些其他问题。但这一定是一个范围问题,因为该类在全局范围内正常工作,而不是从本地范围引用。@jszbody,这正是我的代码,但版本数组中的项目较少。在3v4l上工作,但不在现场工作。