Опасно использовать экстракт в глобальной области видимости и для _REQUEST, _GET, _POST, _COOKIE.
Однако, если вы разрешите использовать только те переменные, которые собираетесь использовать с помощью механизма фильтрации, и сбросить все, что приходит извне, вы можете использовать извлечение.
Например, если вы напрямуювведя _REQUEST, _GET, _POST, _COOKIE в функцию, которая выполнит извлечение () внутри и выпустит только те, которые вы определили в return (), тогда вы тоже в безопасности.Потому что все, что извлечено, включая переменные от злонамеренных попыток, останется внутри области действия функции и не сможет ничего делать.
Итак, extract () учитывает область действия - все, что вы извлекаете внутри функции, остается внутри этой функциивсе, что вы извлекаете внутри метода класса, остается в области действия этого метода класса и никуда не денется без вашего разрешения.
Это означает, что в глобальной области и в области функций / объектов вы можете безопасно использовать извлечение для надежных данных.
Предполагая, что $ args является ассоциативным массивом:
function funny($args)
{
extract($args);
// Hereon you can use the variables normally and they will stay in function scope
}
Ваши переменные останутся внутри области действия функции.
То же самое для метода класса:
class berserker
{
public function funny($args)
{
extract($args);
// Hereon you can use the variables normally and they will stay in method scope
}
}