PHPStan中未定义的变量,但是在其他地方声明了

时间:2018-12-11 21:12:32

标签: php analysis phpstan

您如何在PHPStan中处理这些情况:

  1. 假设您使用纯PHP作为模板引擎。例如,
// view.php

<b><?=$foo?></b>

  1. 假设您有2个文件a.phpb.php
// a.php     
$foo = 'bar';

// b.php     
require 'a.php';     
echo $foo;

PHPStan都将其报告为Undefined variable: $foo

您如何处理?可以将PHPStan配置为以某种方式执行您的应用程序,以便知道这些变量实际上是在运行时定义的吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用phpstan#104 (comment)中提供的phpstan.neon解决方案:

即使使用特定的目录,也可以使用正则表达式忽略特定变量的错误。您可以使用:

parameters:
    ignoreErrors:
        -
            message: '#Undefined variable: \$foo.*#'
            path: my/directory/*
/** @var string $foo */

echo $foo; // No error

echo $unintededUndeclaredVariable; // Error

答案 1 :(得分:0)

您需要做的只是检查以确保设置了变量。

例如

if (isset($foo)) {
    echo $foo;
}

或以下类似内容,如果您不想将所有代码包装在if中。

if (! isset($foo)) {
    throw new Exception('$foo not set');
}