PHP:在define中使用$\u GET

PHP:在define中使用$\u GET,php,superglobals,Php,Superglobals,我试图在下面的代码中定义一个常量,以便能够轻松地在$\u POST和$\u GET之间切换,而无需更改多行 但我得到了以下错误: 分析错误:语法错误,意外的“[”,应为: (T_PAAMAYIM_NEKUDOTAYIM)在 /第14行的var/www/public_docs/admin/web_interface/contract.php define(默认的$\u DATA\u方法,$\u GET);//如果应该使用POST,则更改为$\u POST 函数getData($Name,$Defa

我试图在下面的代码中定义一个常量,以便能够轻松地在$\u POST和$\u GET之间切换,而无需更改多行

但我得到了以下错误:

分析错误:语法错误,意外的“[”,应为: (T_PAAMAYIM_NEKUDOTAYIM)在 /第14行的var/www/public_docs/admin/web_interface/contract.php

define(默认的$\u DATA\u方法,$\u GET);//如果应该使用POST,则更改为$\u POST
函数getData($Name,$Default=”“)
///封装从$\u GET或$\u POST检索的数据
{

return(isset(默认数据方法[$Name])?默认数据方法[$Name]:$DEFAULT);您不能对数组使用
定义
。这一点非常清楚:


常量的值;只允许标量值和空值。标量值是整数、浮点、字符串或布尔值

您可以使用普通参考变量:

$default_data_method =& $_GET;

或者你可以使用
$\u REQUEST
,它会自动合并
$\u POST
$\u GET

为什么你还要把$\u GET或$\u POST放在一个常量中呢?$\u GET和$\u POST是超全局变量,可以从代码中的任何地方访问。将它分配给一个普通变量应该足够了,不是你这样做其实不是个好主意。常数应该是常数

如果您没有运行PHP5.6+,则不能将数组作为常量

如果你没有运行5.6+

可以序列化常量中的$\u POST或$\u GET数据,然后在函数中反序列化

define(DEFAULT_DATA_METHOD, serialize($_GET));

你为什么不直接使用
$\u REQUEST
,它结合了
$\u POST
$\u GET
?你使用的是哪一个PHP版本?数组作为常量仅在PHP5.6+中受支持。此外,常量应该是“常量”-两个$\u GET和$\u POST都不是常量。啊……忘了$\u REQUEST吧……我真丢脸!^^^网络它还没有更新到5.6中允许这样做吗?我猜他是在假设他永远不会改变
$\u GET
,只是在整个脚本中引用它,所以它实际上是常量。我可能错了,但这是我读到的。将数组存储在常量中似乎是一个愚蠢的想法,所以我不会这么做。@barmar这是一个例子我们可能不应该回答的问题,因为做海报试图做的事情是不好的软件工程。@barmar这里有一个允许常量成为数组的参考。
define(DEFAULT_DATA_METHOD, serialize($_GET));