【发布时间】:2009-08-30 19:20:47
【问题描述】:
代码让我大吃一惊,其中 GET 值(例如 $_GET['username'])不包含在函数的参数中。
什么时候需要将 POST 和 GET 方法作为参数包含在函数中?
【问题讨论】:
-
您真正的问题是什么?最后带问号的唯一句子(尽管有缺陷)没有任何意义。 $_GET 和 $_POST 是全局的,它们可以在任何地方使用。这是一种好的编码习惯吗,也许,也许不是。
代码让我大吃一惊,其中 GET 值(例如 $_GET['username'])不包含在函数的参数中。
什么时候需要将 POST 和 GET 方法作为参数包含在函数中?
【问题讨论】:
什么时候需要包含 POST 和 GET 方法作为参数 函数?
我会说“从不”:$_GET 和$_POST 就是所谓的superglobals:它们存在于整个脚本中;这意味着它们存在于函数/方法中。
特别是,您不需要为这些设置 global 关键字。
尽管如此,依赖你的函数/方法中的那些是一个非常糟糕的做法:你的函数/方法通常不应该依赖任何没有作为参数传递的东西。
我的意思是;考虑这两个函数:
function check_login_password()
{
$login = $_GET['login'];
$password = $_GET['password'];
// Work with $login and $password
}
和
/**
* Check login and password
*
* @param $login string
* @param $password string
* @return boolean
*/
function check_login_password($login, $password)
{
// Work with $login and $password
}
好的,对于第一个,您不必传递两个参数...但是该函数将不是独立的,并且在您必须检查几个登录名/密码的任何情况下都不起作用不是来自$_GET。
使用第二个函数,调用者负责传递正确的参数;这意味着它们可以来自您想要的任何地方:该功能将始终能够完成其工作。
【讨论】:
您不需要将它们作为函数参数发送,因为它们是全局变量(可在代码中的任何位置访问)。
但在代码中使用它们之前过滤和验证它们始终是一个好习惯。
【讨论】: