以下代码是否有意义?:
$t_server = isset( $_SERVER ) ? $_SERVER : $HTTP_SERVER_VARS;
Run Code Online (Sandbox Code Playgroud)
据我了解,$HTTP_XXX_VARS同样如此$_XXX,除了$HTTP_XXX_VARS已弃用.因此,我不理解上面的代码.
是否存在两个变量在旧系统中不同的情况,其中$HTTT_XXX_VARS不被视为已弃用?
$HTTP_SERVER_VARS和$_SERVER是不同的变量(如果两者都设置了)。它们最初包含相同的值,但由于不同,脚本对其中一个所做的更改不会影响另一个。
在superglobals($_GET,$_POST,$_SERVER等)被引入于PHP 4.1。长命名变量($HTTP_GET_VARS,$HTTP_SERVER_VARS等)已废弃的PHP 4.1 ,他们被取消了PHP 5.4。
PHP 5.0引入了register_long_arrays用于告诉PHP创建(或不创建)旧的长命名变量($HTTP_GET_VARS和其余变量)的配置设置。该设置已弃用PHP 5.3并完全删除PHP 5.4(连同长命名数组)。
如您所见,在PHP 4.0PHP 和 PHP之间,5.4程序员可以使用这些变量的一个或两个版本。
线路:
$t_server = isset( $_SERVER ) ? $_SERVER : $HTTP_SERVER_VARS;
Run Code Online (Sandbox Code Playgroud)
利用新的超全局变量$_SERVER,如果可用(on PHP >= 4.1),但$HTTP_SERVER_VARS如果它在 old 上运行,它会回退到旧的PHP。它可能是几年前写的,PHP 4当时仍在许多服务器上使用。
除非遇到不太可能的情况,否则PHP 4.0您可以安全地将上面的行更改为:
$t_server = $_SERVER;
Run Code Online (Sandbox Code Playgroud)
或者只是使用$_SERVER而不是$t_server无处不在。