global $user
vs$user = $GLOBALS['user']
「グローバル$var」を使用してグローバル変数を取得することにより、グローバル変数のコピーを取得しますか、それともそのグローバル変数への参照を取得しますか?
global $user;
$ userはグローバルオブジェクトのコピーですか、それとも実際のグローバル変数への参照ですか?
ありがとう。
global $user
vs$user = $GLOBALS['user']
「グローバル$var」を使用してグローバル変数を取得することにより、グローバル変数のコピーを取得しますか、それともそのグローバル変数への参照を取得しますか?
global $user;
$ userはグローバルオブジェクトのコピーですか、それとも実際のグローバル変数への参照ですか?
ありがとう。
これを使用するとglobal $var;
、常にグローバル変数を参照するローカル変数が得られます。
次のコード:
$var = 1;
function test() {
global $var;
$var++;
}
test();
echo $var;
と同等です:
$var = 1;
function test() {
$GLOBALS['var']++;
}
test();
echo $var;
「var」という名前のグローバル変数を使用global $var
すると、関数のローカルスコープにインポートされます(これは参照を作成することによって行われます)。
$GLOBALS
これは、スーパーグローバル変数とは異なります。それは、スコープに関係なく常にどこにでもあります。
ただし、それは参照とは異なります。変数と、これが変数への参照でどのようになっているのかを本当に理解したい場合は、Derick RethansによるPDF:PHPでの参照:詳細な外観(PDF)をお勧めします。
スクリプトのグローバルスコープで現在定義されているすべての変数への参照を含む連想配列。変数名は配列のキーです。
簡単なテストケース:
$foo = "foo";
echo $GLOBALS["foo"]; // foo
echo $GLOBALS["foo"] = "bar"; // bar
echo $foo; // bar
ない。コンパイラーは、その変数名の使用法をグローバルスコープ内の対応する変数に解決します。