我正试图定义一个常量,就像下面的代码中一样,以便能够在$_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));