我想合并两个php项目。两个项目都使用全局变量,因此我希望有单独的全局范围。
示例:
file project1.php:
$var1 = 'var1';
function print1() {
global $var1;
echo $var1;
}
print1();
file project2.php:
function load1() {
include('project1.php');
}
$var2 = 'var2';
function print2() {
global $var2;
echo $var2;
}
print2();
load1();
这将按预期执行project2但project1将失败,因为$ var1不在全局范围内,但在load1()的范围内。
一个可能的解决方法是在load1()中调用global $var1
,但这会混合两个全局范围(凌乱)并且会很复杂,因为reallive project2有很多全局变量,我必须检查是否存在每次更新都是新的。
因此,如果我可以为project1创建一个单独的全局范围,那将是最好的。这可能吗?
答案 0 :(得分:0)
如果你真的需要在函数中包含include,请查看PHP Namespaces。
project2.php:
namespace project2 {
$var2 = 'var2';
function print2() {
global $var2;
echo $var2;
}
print2();
}
namespace project1 {
function load1() {
global $var1;
include('project1.php');
}
load1();
}
答案 1 :(得分:0)
不可能有单独的GLOBAL上下文。无论发生什么,全球背景的唯一目的是“全球化”。
为了解决这个问题,你应该将你的代码“语境化”,将全局变量重构为函数参数:
function print2() {
global $var2;
echo $var2;
}
成为:
function print2($var2) {
echo $var2;
}