PHP: 在定义中使用 $_GET

PHP: use $_GET in define

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

但我收到以下错误:

Parse error: syntax error, unexpected '[', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in /var/www/public_docs/admin/web_interface/contract.php on line 14

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 与数组一起使用。 documentation说的很清楚了:

value
The value of the constant; only scalar and null values are allowed. Scalar values are integer, float, string or boolean values.

可以使用普通的引用变量:

$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));