PhpStorm не видит динамическое определение переменных. Вот код, в котором IDE видит ошибки там, где их нет:
foreach (array('foo', 'bar', 'baz') as $postfix) { $postfixedVariableName = sprintf('variable_%s', $postfix); $$postfixedVariableName = $postfix; } echo $variable_foo, PHP_EOL; // PhpStorm: Undefined variable 'variable_foo' echo $variable_bar, PHP_EOL; // PhpStorm: Undefined variable 'variable_bar' echo $variable_baz, PHP_EOL; // PhpStorm: Undefined variable 'variable_baz'
Чтобы PhpStorm увидел подобные переменные, необходимо добавить декларацию переменных в текущей области видимости:
/** @var $variable_foo */ /** @var $variable_bar */ /** @var $variable_baz */ foreach (array('foo', 'bar', 'baz') as $postfix) { $postfixedVariableName = sprintf('variable_%s', $postfix); $$postfixedVariableName = $postfix; } // ...