In plain English: extract() and variable variables such as $$name create
local variable names from data. The code becomes hard to follow, and user input
can overwrite variables you did not expect.
Why it matters: A request key can replace a local variable, including a security-sensitive one. It also makes it difficult to see which variables a function reads or writes.
extract($_POST);
$$name = 'value';
${$key} = 'value';
$name = $input['name'] ?? '';
$email = $input['email'] ?? '';
return compact('name', 'email');
extract($data) calls${$name}$$name and $$$name$input['name'].compact() is used.extract(), especially with request data.extract() is reported even with EXTR_SKIP or EXTR_PREFIX_ALL.E0054 has no configuration options and is enabled by default.