背景: 同じプロジェクトの別の部分で再利用したい静的関数を持つ既存のクラスがあります。静的関数は$_GET
などを使用します。
これが不可解なコードです。まず、クラス:
<?php
// ./fakeapi/fakeapi.php
class FakeAPI {
static public function test (){
$var = '_GET';
${$var}['newVar'] = '123';
print_r($_GET);
}
}
そして、それを必要とするファイル:
<?php
require_once 'fakeapi/fakeapi.php';
FakeAPI::test();
$var = '_GET';
${$var}['newVar'] = '123';
print_r($_GET);
プリント:
Array
(
)
Array
(
[newVar] => 123
)
...そして、私には理由がわかりません。$_GET['newVar'] = '123';
クラス関数で設定すると機能するため、スコープの問題ではありません。ここで何が起こっているか知っている人はいますか?