0

2つの外部スクリプトでグローバル変数を渡すにはどうすればよいですか?

<div>
<!-- INCLUDEPHP 1.php -->
</div>
<div>
<!-- INCLUDEPHP 2.php -->
</div>

および`2.phppでグローバル変数を作成しようとしまし1.phpたが、機能しませんでした。

1.php:

<?php
global $someVar;
$sql = ...;
$someVar= $db -> sql_query($sql);
?>

2.php:

<?php
global $someVar;
echo "$someVar";
?>

私は何か間違ったことをしていますか?

4

2 に答える 2

2

PHP経由でスクリプトを含めてみます:

<div>
<?php require "1.php" ?>
</div>
<div>
<?php require "2.php" ?>
</div>
于 2012-06-10T20:47:50.877 に答える
1

両方のインクルードが同じページに読み込まれ、変数が既にグローバル スコープに存在する場合、すべての関数は 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.";

私が何を意味するか分かりますか?

あなたの解決策はおそらく、この「グローバル」を必要とするすべての関数が含まれている何らかのクロージャーにあります。それははるかによく保護されます。

于 2012-06-10T21:03:29.787 に答える