Php,两个外部脚本的全局变量

时间:2012-06-10 20:42:15

标签: php

如何在两个外部脚本中传递全局变量?

<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";
?>

我做错了吗?

2 个答案:

答案 0 :(得分:2)

我会尝试通过PHP包含脚本:

<div>
<?php require "1.php" ?>
</div>
<div>
<?php require "2.php" ?>
</div>

答案 1 :(得分:1)

如果两个包含都加载到同一页面中,并且变量已存在于全局范围内,则所有函数都可以使用全局语句访问它们。由于所有内容都是全局的,因此全局范围内不需要该语句,只需要内部函数。这也允许函数通过将变量转换为全局范围来共享变量。

但是,这有很多危险,我不会假装完全注意到这一点,因此建议谨慎使用大型复杂应用程序中的全局范围,因为如果命名约定它们会变得非常不稳定放松了。

基本上,我们正在考虑,

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.";

明白我的意思?

您的解决方案可能存在于某种类型的闭包中,其中包含需要此“全局”的所有函数。它会得到更好的保护。