5

你如何在 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 是否可以配置为以某种方式执行您的应用程序,以便它知道这些变量实际上是在运行时定义的?

4

2 回答 2

3

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

您可以使用正则表达式忽略特定变量的错误,即使在特定目录中也是如此。在您的情况下,您可以使用:

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

echo $foo; // No error

echo $unintededUndeclaredVariable; // Error
于 2020-03-31T20:39:13.687 回答
2

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

例如

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

如果您不想将所有代码包装在if.

if (! isset($foo)) {
    throw new Exception('$foo not set');
}
于 2019-02-06T14:41:11.090 回答