【问题标题】:PHP: $_GET and $_POST in functions?PHP:函数中的 $_GET 和 $_POST?
【发布时间】:2009-08-30 19:20:47
【问题描述】:

代码让我大吃一惊,其中 GET 值(例如 $_GET['username'])不包含在函数的参数中。

什么时候需要将 POST 和 GET 方法作为参数包含在函数中?

【问题讨论】:

  • 您真正的问题是什么?最后带问号的唯一句子(尽管有缺陷)没有任何意义。 $_GET 和 $_POST 是全局的,它们可以在任何地方使用。这是一种好的编码习惯吗,也许,也许不是。

标签: php post function get


【解决方案1】:

什么时候需要包含 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

使用第二个函数,调用者负责传递正确的参数;这意味着它们可以来自您想要的任何地方:该功能将始终能够完成其工作。

【讨论】:

    【解决方案2】:

    $_GET 和 $_POST 是全局变量。它们有值,而不是方法。

    您要发送给函数的是它们的值,而类/函数通常应该不知道它们之外的任何东西,例如数据的来源。许多人使用在函数中使用全局变量的快捷方式,从而限制了其函数的可用性。

    【讨论】:

    • 公平地说,它可以参考 HTTP methods GETPOST (虽然问题令人困惑)。
    【解决方案3】:

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

    但在代码中使用它们之前过滤和验证它们始终是一个好习惯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      相关资源
      最近更新 更多