PHP:在define中使用$ _GET

时间:2015-02-20 17:13:23

标签: php superglobals

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

但是我得到以下错误:

  

解析错误:语法错误,意外' [',期待::   (T_PAAMAYIM_NEKUDOTAYIM)in   第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
}

我想实现的目标是什么?怎么样?

3 个答案:

答案 0 :(得分:2)

您不能将define与数组一起使用。 documentation非常清楚:

  

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

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

$default_data_method =& $_GET;

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你正在做的事实上并不是一个好主意。常数应该是常数。

如果您没有运行PHP 5.6+,则无法将数组作为常量。

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

如果你没有运行5.6 +。

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

define(DEFAULT_DATA_METHOD, serialize($_GET));