Неопределенная переменная в PHPStan, но она объявлена в другом месте
Как вы справляетесь с этими сценариями в PHPStan:
- Допустим, вы используете простой PHP в качестве движка шаблонов. Например,
// view.php <b><?=$foo?></b>
- Скажем, у вас есть 2 файла
a.php
а такжеb.php
// a.php $foo = 'bar'; // b.php require 'a.php'; echo $foo;
PHPStan сообщит об этом как Undefined variable: $foo
Как вы справляетесь с этим? Можно ли сконфигурировать PHPStan для выполнения вашего приложения, чтобы он знал, что эти переменные фактически определены во время выполнения?
1 ответ
Вы можете попробовать использовать phpstan.neon
решение, представленное в phpstan#104 (комментарий):
Вы можете игнорировать ошибку для определенных переменных, используя регулярные выражения, даже в определенных каталогах. В вашем случае вы можете использовать:
parameters:
ignoreErrors:
-
message: '#Undefined variable: \$foo.*#'
path: my/directory/*
/** @var string $foo */
echo $foo; // No error
echo $unintededUndeclaredVariable; // Error
Все, что вам нужно сделать, это выполнить проверку, чтобы убедиться, что переменная установлена.
например
if (isset($foo)) {
echo $foo;
}
или что-то вроде следующего, если вы не хотите обернуть весь свой код в if
,
if (! isset($foo)) {
throw new Exception('$foo not set');
}