Как правило, я бы сказал, не используйте извлечение.
Обычно лучше хранить все значения внутри массива, поскольку вы можете зациклить массив.
С переменными вы не знаете, сколькосоздан с извлечением.Было ли это только одно значение в массиве или 50?
Если оно находится в массиве, вы можете посчитать и зациклить его, в переменных вам нужно проверить, установлена ли каждая переменная или нет.
Также использование extract будетпереписать ваши переменные, если вам не повезло.
// Some calculations result in a price
$price = 500;
// Now you get an array from user input or json and extract it
$array = ["something" => "here", "price" => 10];
extract($array);
// Extracting overwrites your $price with value 10!
echo $price; // 10
Допустим, мы снова используем вышеописанный сценарий, но без извлечения.
// Some calculations result in a price
$price = 500;
// Now you get an array from user input or json
$array = ["something" => "here", "price" => 10];
echo $price; // 500
echo $array['price']; // 10
Теперь у нас есть и значение массива, и ваше значение.
Ничто не скомпрометировано, поскольку мыконтролируют, куда переходят значения.
Но как только вы используете извлечение, вы действительно разворачиваете все и можете надеяться только на лучшее.
TL / DR;
Не используйте экстракт.Если вам нужно / хотите использовать его, используйте только extract для ваших собственных массивов, которые вы контролируете на 100%.