PHP: $ _GET и $ _POST в функциях?

Я изумлен кодом, где ПОЛУЧАТЬ-ЗНАЧЕНИЯ, такой как $_GET['username'], не включены как параметры к функциям.

Когда необходимо включать POST и ПОЛУЧИТЬ методы как параметры к функциям?

7
задан Peter Mortensen 29 October 2019 в 15:42
поделиться

3 ответа

Когда вам нужно включать POST и методы GET в качестве параметров для функции?

Я бы сказал «никогда»: $ _ GET и $ _ POST - это так называемые суперглобальные переменные : они существуют во всем скрипте; что означает, что они существуют внутри функций / методов.

В частности, вам не нужно для них ключевое слово 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 .

С помощью второй функции, вызывающий отвечает за передачу правильных параметров; Это означает, что они могут поступать откуда угодно: функция всегда сможет выполнять свою работу.

27
ответ дан 6 December 2019 в 06:24
поделиться

$ _ GET и $ _POST - глобальные переменные. У них есть значения, а не методы.

Это их значения, которые вы хотите отправить функциям, а классы / функции обычно не должны знать ничего за пределами них, например, откуда данные. Многие используют сокращение использования глобальных переменных в функциях, что ограничивает удобство использования их функций.

1
ответ дан 6 December 2019 в 06:24
поделиться

Вам не нужно их отправлять в качестве параметров функции, поскольку они являются глобальными переменными (доступны везде в коде).

Но всегда рекомендуется фильтровать и проверять их, прежде чем использовать их в своем коде.

0
ответ дан 6 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: