Php Can';无法访问内部的超级全局调用静态?

Php Can';无法访问内部的超级全局调用静态?,php,static-methods,Php,Static Methods,以下代码在我安装PHP5.3.6-13ubuntu3.2时失败,这使我想知道为什么我不能在这个方法中访问$\u服务器超级全局 <?php header('Content-Type: text/plain'); $method = '_SERVER'; var_dump($$method); // Works fine class i { public static function __callStatic($method, $args) { $met

以下代码在我安装
PHP5.3.6-13ubuntu3.2
时失败,这使我想知道为什么我不能在这个方法中访问$\u服务器超级全局

<?php

header('Content-Type: text/plain');

$method = '_SERVER';
var_dump($$method); // Works fine

class i
{
    public static function __callStatic($method, $args)
    {
        $method = '_SERVER';
        var_dump($$method); // Notice: Undefined variable: _SERVER
    }
}

i::method();

如手册所示:

Note: Variable variables

Superglobals cannot be used as variable variables inside functions or class methods. 

()

[编辑-添加了可能的解决方法]
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();

两者对我都不起作用:@Gordon,这个代码板可能在CLI上运行,这就是为什么
$\u服务器
是空的。不:@Gordon,我看到他们有,所以可能我发现了一个PHP错误。它就在那里。伙计,我每天都学到新东西干得好+1想要更多的怪异。。。“this works”行在我的5.3.1服务器上不起作用。不仅如此,
$GLOBALS[''u SERVER']
在我的服务器上为空。