$ HTTP_XXX_VARS与PHP中的$ _XXX不同吗?

Jeo*_*eon 8 php

以下代码是否有意义?:

$t_server = isset( $_SERVER ) ? $_SERVER : $HTTP_SERVER_VARS;
Run Code Online (Sandbox Code Playgroud)

据我了解,$HTTP_XXX_VARS同样如此$_XXX,除了$HTTP_XXX_VARS已弃用.因此,我不理解上面的代码.

是否存在两个变量在旧系统中不同的情况,其中$HTTT_XXX_VARS不被视为已弃用?

axi*_*iac 5

$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无处不在。