为什么PHP中的全局变量不能在require_once文件中运行?

时间:2016-06-25 22:50:47

标签: php

在PHP脚本中,我使用$GLOBALS['someName'] = someValue在脚本开头定义了一个全局变量。然后,someFunction使用此全局变量,稍后使用require在脚本中加载该变量。如果我更正,我应该能够在脚本的开头设置$someName = someValue,并在全局范围内提供$someName。但是,当我执行此操作时,$someName无法使用someFunction。它仅在我使用$GLOBALS['someName']时有效。为什么在PHP脚本开头定义时,$someName不能作为全局变量工作?

2 个答案:

答案 0 :(得分:2)

在函数外定义变量时,它在页面中是全局的,但在函数中不可访问。要使变量成为全局变量并在其他函数中使用,有两种方法:

  1. 您必须使用global关键字。所以,只需在函数的开头写global $someName,然后在函数中正常使用它们。

  2. 请勿将全局变量重新定义为global $someName,而应将其直接用作$GLOBALS['someName']

  3. 转到this参考了解详情。

答案 1 :(得分:1)

好的,让我们给出一个恰当的例子:

我将在PHP中打开一个交互式终端来演示访问全局。

Interactive mode enabled
php > $myvar = "yves";
php > function testing() { echo $myvar; }; testing();
PHP Notice:  Undefined variable: myvar in php shell code on line 1
php > function testing_with_global() { global $myvar; echo $myvar; } 
php > testing_with_global();
yves
php > 

或者,您可以使用$GLOBALS['myvar']访问全局。

但你真的不想这样做。请参阅why