Я ошеломлен кодом, где значения GET, такие как $_GET['username']
, не включаются в качестве параметров для функций.
Когда вам нужно включить методы POST и GET в качестве параметров функций?
Когда вам нужно включить методы 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
.
При второй функции вызывающий отвечает за передачу правильных параметров; которые означают, что они могут поступать откуда угодно: функция всегда сможет выполнять свою работу.
$ _GET и $ _POST – глобальные переменные. У них есть значения, а не методы. Это их значения, которые вы хотите отправить в функции, а классы / функции должны вообще не знать ничего вне их, например, откуда поступают данные. Многие используют ярлык использования глобальных переменных в функциях и тем самым ограничивают удобство использования своих функций.
Вам не нужно отправлять их в качестве параметров функции, так как они являются глобальными переменными (доступными каждый раз в коде).
Но всегда рекомендуется проверять и проверять их до того, как вы их используете в своем коде.