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

214
26 апреля 2017, 13:11

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

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

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

Answer 1

$_POST, как и другие суперглобальные переменные (встроенные переменные всегда доступные во всех областях видимости) PHP ($GLOBALS, $_SERVER, $_GET, $_FILES, $_COOKIE, $_SESSION, $_REQUEST, $_ENV), изначально инициализируется пустым массивом, а потом заполняется соответствующими значениями.

За исключением $_SESSION, которую нужно явно инициализировать вызовом session_start().

Сделано так, скорее всего, по каким-то внутренним соображениям для удобства.

Так же, так как в большинстве случаев в получении всего содержимого суперглобальной переменной нет необходимости, а нужно лишь получить значение или проверить наличие определенного ключа, и зная что переменная всегда массив, удобно использовать конструкцию isset($_VAR[$key]); без дополнительных проверок самой переменной.

READ ALSO
Yii2 сессия очищается после авторизации

Yii2 сессия очищается после авторизации

ЗдравствуйтеДелаю простой интернет-магазин

371
Как написать такой .htaccess?

Как написать такой .htaccess?

Как написать в правилоhtaccess, чтобы при заходе на сайт переправляло на public/index

174
SELECT * FROM “название стола в переменной”

SELECT * FROM “название стола в переменной”

Подскажите плз реализацию правильного написания вот этого куска, чтобы название стола бралось из переменной с помощью метода Post

194