Страницы

Поиск по вопросам

среда, 22 мая 2019 г.

Почему $_POST всегда существет?

Проверяю в коде php, задан ли $_POST через isset($_POST)
Заметил, что выражение всегда возвращает true, даже когда никаких данных не передовали, при этом $_POST является пустым массивом. Почему так происходит и зачем так сделано? Или это только при определенных условиях?
Вопрос чисто теоретический, проблемы тут никакой нет.


Ответ

$_POST, как и другие суперглобальные переменные (встроенные переменные всегда доступные во всех областях видимости) PHP ($GLOBALS, $_SERVER, $_GET, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV), изначально инициализируется пустым массивом, а потом заполняется соответствующими значениями.
За исключением $_SESSION, которую нужно явно инициализировать вызовом session_start()
Сделано так, скорее всего, по каким-то внутренним соображениям для удобства.
Так же, так как в большинстве случаев в получении всего содержимого суперглобальной переменной нет необходимости, а нужно лишь получить значение или проверить наличие определенного ключа, и зная что переменная всегда массив, удобно использовать конструкцию isset($_VAR[$key]); без дополнительных проверок самой переменной.

Комментариев нет:

Отправить комментарий