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

Я ошеломлен кодом, где значения 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 – глобальные переменные. У них есть значения, а не методы. Это их значения, которые вы хотите отправить в функции, а классы / функции должны вообще не знать ничего вне их, например, откуда поступают данные. Многие используют ярлык использования глобальных переменных в функциях и тем самым ограничивают удобство использования своих функций.

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

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