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