如何使用函数将全局变量包含在另一个函数中?

时间:2018-01-19 17:41:28

标签: php wordpress variables global-variables

我有一组相当大的全局变量,我希望能够在各种文件的其他函数中使用它们。我知道要在其他函数中使用这些变量,我需要使用global关键字来包含变量名。

当我这样做时,一切都有效,但由于变量太多,我宁愿创建一个函数,允许我在函数中包含global声明,我需要的是特定的变量块包含使用函数参数。

为了便于说明,这有效:

variables.php (在包含其他文件之前声明)

$var1 = 'abc';
$var2 = 'def';
$var3 = 'ghi';

其他功能-file.php

function my_function() {
  global $var1, $var2, $var3;
  return $var1 . $var2 . $var3;
}

但这不起作用:

variables.php

$var1 = 'abc';
$var2 = 'def';
$var3 = 'ghi';

全局一览declaration.php

global $var1, $var2, $var3;

全局-包括-function.php

function include_globals() {
  include_once('globals-list-declaration.php');
}

其他功能-file.php

function my_function() {
  include_globals();
  return $var1 . $var2 . $var3;
}

这有点简化,因为有多个变量和全局声明文件,我将能够通过将参数传递给 globals-include-function中的include_globals()来指定要包含的文件.PHP

但出于某种原因,当我将硬类型的global $var1, $var2, $var3;移动到单独的文件并将include移动到完全相同的位置时(通过includeinclude_globals()在上面描述的功能),它停止工作。

我怎样才能完成这项工作,或者甚至可以做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:2)

来自文档http://php.net/manual/en/function.include.php

  

如果include出现在调用文件中的函数内部,那么被调用文件中包含的所有代码就会像在函数内部定义一样运行

换句话说,如果不能用这个:

function include_globals() {
    include_once('globals-list-declaration.php');
}

因为全局变量的定义只存在于此函数中。

答案 1 :(得分:0)

适合我:

<?php

$foo = 'hello';
$bar = 'world';

function include_globals()
{
    include 'do-globals.inc.php';

    return $foo . $bar;
}

echo include_globals();

do-globals.inc.php的内容:

<?php

global $foo, $bar;

输出:

helloworld