Переменные переменные Superglobals

В PHP …

var_dump(${'_GET'}); // array(0) { } - #1 $var = '_GET'; var_dump(${$var}); // array(0) { } - #2 function test() { var_dump(${'_GET'}); // array(0) { } - #3 $var = '_GET'; var_dump(${$var}); // NULL - #4 } test(); 

Что происходит?

Это не ошибка, это особенность :

Предупреждение

Обратите внимание, что переменные переменные не могут использоваться с массивами Superglobal от PHP в рамках функций или методов класса. Переменная $ this также является специальной переменной, на которую нельзя ссылаться динамически.