我有一组相当大的全局变量,我希望能够在各种文件的其他函数中使用它们。我知道要在其他函数中使用这些变量,我需要使用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
移动到完全相同的位置时(通过include
或include_globals()
在上面描述的功能),它停止工作。
我怎样才能完成这项工作,或者甚至可以做到这一点?
谢谢!
答案 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