PHP:全局变量范围

PHP:全局变量范围,php,Php,我有一个单独的文件,其中包含了具有设置值的变量。 如何使这些变量成为全局变量 例如,我在values.php文件中有值$myval。在index.php中,我调用了一个需要$myval值的函数 如果我添加include(values.php)在index.php文件的begining中,它释放了函数内部的作用域。我将在index.php文件的多个函数中调用同一变量。在函数内部使用: global $myval; 在函数内部,使用全局关键字或从以下位置访问变量: 或者,为了更好的可读性:使用$G

我有一个单独的文件,其中包含了具有设置值的变量。 如何使这些变量成为全局变量

例如,我在
values.php
文件中有值
$myval
。在
index.php
中,我调用了一个需要
$myval
值的函数


如果我添加
include(values.php)
在index.php文件的begining中,它释放了函数内部的作用域。我将在index.php文件的多个函数中调用同一变量。

在函数内部使用:

global $myval;

在函数内部,使用
全局
关键字或从以下位置访问变量:

或者,为了更好的可读性:使用
$GLOBALS[]
。这表明您正在访问全局范围内的内容

function myfunc() {
  echo $GLOBALS['myvar'];
}
但最后

尽可能避免以全局变量开头,并将其作为参数传递给函数:

function myfunc($myvar) {
  echo $myvar . " (in a function)";
}

$myvar = "I'm global!";
myfunc($myvar);
// I'm global! (in a function)

与在同一文件中声明变量相同

function doSomething($arg1, $arg2) {
    global $var1, $var2;
    // do stuff here
}

在函数开头使用global关键字将使这些变量进入作用域。比如说

$outside_variable = "foo";

function my_function() {
   global $outside_variable;
   echo $outside_variable;
}

您不能将变量传递到函数中有什么原因吗

myFunction($myVariable)
{
  //DO SOMETHING
}

传递变量比使用全局变量要好得多。

您可能想问问自己为什么要使用全局变量,以及是否有更好的方法来实现同样的目标。全局变量几乎总是一个坏主意。include与变量作用域无关,有那么难调查吗?如果我说某个东西有全局作用域,我希望当我在脚本中包含定义了该变量的文件时,它将保留在全局作用域中,并且可以这样处理。是的,在发现它不起作用后,include似乎只是在每次脚本运行时为我重新定义变量。PHP文档根本没有提到这一点。
myFunction($myVariable)
{
  //DO SOMETHING
}