我对代码感到惊讶,其中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
的登录/密码的任何情况下都无法工作。
使用第二个函数,调用者负责传递正确的参数;这意味着它们可以来自任何地方:该函数始终能够完成其工作。
你不需要将它们作为函数参数发送,因为它们是全局变量(在代码的任何地方都可以访问)。
但在使用它们之前,过滤和验证它们总是一个好习惯。