如何在两个外部脚本中传递全局变量?
<div>
<!-- INCLUDEPHP 1.php -->
</div>
<div>
<!-- INCLUDEPHP 2.php -->
</div>
我尝试在 1.php
和 '2.phpp 上创建全局变量,但没有奏效。
1.php:
<?php
global $someVar;
$sql = ...;
$someVar= $db -> sql_query($sql);
?>
2.php:
<?php
global $someVar;
echo "$someVar";
?>
我做错了什么吗?
我会尝试通过PHP包含脚本:
<div>
<?php require "1.php" ?>
</div>
<div>
<?php require "2.php" ?>
</div>
如果两个包含都加载到同一页面中,并且变量已经存在于全局范围内,则所有函数都可以使用 global 语句访问它们。由于一切都已经是全局的,因此在全局范围内不需要该语句,只需要在函数内部。这也允许函数通过将变量强制转换为全局范围来共享变量。
但是,这有很多危险,我不会假装完全意识到,因此最好在大型复杂应用程序中谨慎使用全局范围,因为如果放宽命名约定,它们可能会变得非常不稳定。
基本上,我们正在研究,
function arrow() { global $a; $a = "arrow"; return $a; }
function sky() { global $b; $b = "sky"; return $b; }
echo "I shot an " . arrow() . " into the " . sky() . ".";
echo "I shot an $a into the $b.";
这是儿戏,它展示了变量的暴露程度,坐在那里没有任何保护。现在另一个函数可以出现并将整个事情炸开:
function whammo() { global $a, $b; $c = $a; $a = $b; $b = $c;}
echo "I shot an " . arrow() . " into the " . sky() . ".";
whammo();
echo "I shot an $a into the $b.";
明白我的意思吗?
您的解决方案可能在于某种闭包,其中包含所有需要此"全局"的函数。它会得到更好的保护。