我对代码感到惊讶,其中GET值(例如$_GET['username']
)不包含在函数的参数中。
您何时需要将POST和GET方法作为参数包含在函数中?
答案 0 :(得分:27)
您何时需要包含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
。
使用第二个函数,调用者负责传递正确的参数;这意味着他们可以来自你想要的任何地方:功能总是能够做到这一点。
答案 1 :(得分:1)
$ _ GET和$ _POST是全局变量。他们有价值而不是方法。 它是你想要发送给函数的值,而类/函数通常应该不知道它们之外的任何东西,比如数据的来源。许多人使用函数中使用全局变量的快捷方式,从而限制了函数的可用性。
答案 2 :(得分:0)
您不需要将它们作为函数参数发送,因为它们是全局变量(可以在代码中的每个位置访问)。
但在您的代码中使用它们之前,过滤和验证它们总是一种很好的做法。