Перейти к содержанию

4.2 Ядро WordPress. Функция wp_unregister_GLOBALS()

Last updated on 23.05.2021

Данная функция располагается в файле “load.php”. Полный путь к нему таков:

корневая папка сайта/wp-includes/load.php

wp_unregister_GLOBALS

Описание wp_unregister_GLOBALS()

Функция “wp_unregister_GLOBALS()” – эта функция удаляет из суперглобального массива “$GLOBALS” лишние суперглобальные массивы. Прежде чем перейти к разбору этой функции, хочу сказать, что массив “$GLOBALS” способен хранить ссылки на на все переменные, определенные в данный момент в глобальной области видимости скрипта. Имена переменных являются ключами массива. Это могут быть, например: “$_SERVER”, “$_GET”, “$_POST”, “$_COOKIE”, “$_SESSION”.

Сначала проверяется директива “register_globals”. Если данная директива возвращает “TRUE”, значит разрешено регистрировать переменные EGPCS (Environment, GET, POST, Cookie, Server) в качестве глобальных. Если это так, то обращаемся к глобальной переменной “$_REQUEST”. С помощью функции “isset()” узнаём хранится ли в этой переменной ссылка на суперглобальный массив “$GLOBALS”. Если такая ссылка имеется, тогда прекращаем работу скрипта, используя функцию “die()”.

Если в переменной “$_REQUEST” такая ссылка не храниться, формируется список глобальных переменных, ссылки на которых должны остаться в массиве “$GLOBALS”. Этот список представляется в виде массива “$no_unset”. Затем используется функция “array_merge()” для слияния переменных “$_GET”, “$_POST”, “$_COOKIE”, “$_SERVER”, “$_ENV”, “$_FILES”, “$_SESSION”. Так как эти переменные являются, по своей сути, ассоциативными массивами, то их слияние возможно.

Новый массив “$input”, полученный после слияния, тоже является ассоциативным. В этом массиве в качестве ключей используются имена глобальных переменных “_ENV”, “_FILES”, “_SESSION” и так далее. Теперь, используя конструкцию “foreach”, запускается перебор массива “$input”. Внутри этой конструкции ключи этого массива хранятся в переменной “$k”. При помощи функции “in_array()” ищем совпадения значения переменной “$k” со значениями элементов массива “$no_unset”. Если совпадения нет и в массиве “$GLOBALS” имеется элемент, у которого ключ имеет тоже значение, что и у переменной “$k”, тогда удаляем этот элемент при помощи функции “unset()”.

Функция wp_unregister_GLOBALS() запрещена для использования в WordPress 5.5 и выше

Опубликовано в рубрике4. Файл "load.php"Ядро Wordpress