重要な注意:
$GLOBALS
汚いと悪です。それらを使用しないでください。これまで。これまでにない。そもそもなぜこれを行うのかではなく、機能しないという事実に
注目してください。これは純粋に技術的な演習に関する理論的な問題です。
これはかなり奇妙なものです。という名前の文字列を使用して可変 variable を作成しようとしています$GLOBALS
。
グローバルスコープから
var_dump()
これをグローバルスコープで実行すると何が得られるか見てみましょう。
$g = sprintf('%s%s%s%s%s%s%s', chr(71), chr(76), chr(79), chr(66), chr(65), chr(76), chr(83));
var_dump($$g);
結果は、ここで確認できるグローバル変数の配列です。すごい!それでは、関数でこれを試してみましょう。
関数スコープから
$GLOBALS
まず、関数内で実際にチェックを実行できることを確認しましょう。
function globalAllTheThings()
{
var_dump($GLOBALS);
}
globalAllTheThings();
結果は次のとおりです。これはここで見ることができます。
それでは、関数内のグローバル スコープで使用した最初のテストを試して、何が起こるか見てみましょう。
function globalAllTheThings()
{
$g = sprintf('%s%s%s%s%s%s%s', chr(71), chr(76), chr(79), chr(66), chr(65), chr(76), chr(83));
var_dump($$g);
}
globalAllTheThings();
簡単にするために
奇妙な難読化なしでこれを試すこともできます(聞かないでください)。
function globalAllTheThings()
{
$g = 'GLOBALS';
var_dump($$g);
}
globalAllTheThings();
返しNULL
ます。それは何ですか?? が返される理由NULL
と、これを機能させるにはどうすればよいですか。なぜ聞くの?もちろん、教育目的のために、そして科学のために!