我正在尝试在下面的代码中定义一个常量,以便能够在$ _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
}
我想实现的目标是什么?怎么样?
答案 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));