PHP:在define中使用$_GET


PHP: use $_GET in define

我正试图定义一个常量,就像下面的代码中一样,以便能够在$_POST和$_GET之间轻松切换,而无需更改多行。

但我得到以下错误:

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

define(DEFAULT_DATA_METHOD, $_GET);   // change to $_POST if post should be used
function getData($Name, $Default = "")
/// Encapsulate data retrieval from $_GET or $_POST
{
 return (isset(DEFAULT_DATA_METHOD[$Name]) ? DEFAULT_DATA_METHOD[$Name] : $Default); <-- Line 14
}

我想要实现的目标可能实现吗?如何?

不能将define与数组一起使用。文件对此非常清楚:


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

你可以使用一个普通的参考变量:

$default_data_method =& $_GET;

或者您可以使用$_REQUEST,它会自动合并$_POST$_GET

为什么需要将$_GET或$_POST放入常量$_GET和$_POST是超级全局变量,可以从代码中的任何位置访问。将其分配给一个普通变量应该足够了,不是吗?

您所做的实际上不是一个好主意。常量应该是常量。

如果您没有运行PHP 5.6+,就不能将数组作为常量。

http://php.net/manual/en/migration56.new-features.php

如果你没有运行5.6+.

您可以在常量中序列化$_POST或$_GET数据,然后在函数中反序列化。

define(DEFAULT_DATA_METHOD, serialize($_GET));