PHP:函数中的$ _GET和$ _POST?

时间:2009-08-30 19:20:48

标签: php post function get

我对代码感到惊讶,其中GET值(例如$_GET['username'])不包含在函数的参数中。

您何时需要将POST和GET方法作为参数包含在函数中?

3 个答案:

答案 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)

您不需要将它们作为函数参数发送,因为它们是全局变量(可以在代码中的每个位置访问)。

但在您的代码中使用它们之前,过滤和验证它们总是一种很好的做法。