[править - добавлен возможный обходной путь]
header('Content-Type: text/plain');
class i
{
public static function __callStatic( $method, $args)
{
switch( $method )
{
case 'GLOBALS':
$var =& $GLOBALS;
break;
case '_SERVER':
$var =& $_SERVER;
break;
case '_GET':
$var =& $_GET;
break;
// ...
default:
throw new Exception( 'Undefined variable.' );
}
var_dump( $var );
}
}
i::_SERVER();
i::_GET();
[оригинальный ответ] Это странно.Я согласен, что это может быть ошибка PHP.Однако суперглобальный работает, но не как переменная переменная.
<?php
header('Content-Type: text/plain');
$method = '_SERVER';
var_dump($$method); // Works fine
class i
{
public static function __callStatic( $method, $args)
{
var_dump( $_SERVER ); // works
var_dump( $$method ); // Notice: Undefined variable: _SERVER
}
}
i::_SERVER();