Страницы

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

суббота, 7 марта 2020 г.

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

#php


Проверяю в коде php, задан ли $_POST через isset($_POST) 

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

Вопрос чисто теоретический, проблемы тут никакой нет.
    


Ответы

Ответ 1



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

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

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