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

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