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


Why isn't global variable in PHP available to function in require_once file?

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

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

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

  2. 不要将全局变量重定义为global $someName,而是直接将它们用作$GLOBALS['someName']

有关详细信息,请转到此参考。

好吧,

让我们举一个合适的例子:

我将在 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'] 访问全局。

但你真的不想这样做。看看为什么。