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']
在我的服务器上为空。