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

IMB*_*IMB 7 php analysis phpstan

PHPStan 中如何处理这些场景:

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

<b><?=$foo?></b>
Run Code Online (Sandbox Code Playgroud)

  1. 假设你有 2 个文件a.php并且b.php
// a.php     
$foo = 'bar';

// b.php     
require 'a.php';     
echo $foo;
Run Code Online (Sandbox Code Playgroud)

PHPStan 都会将此报告为Undefined variable: $foo

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

Geo*_*rge 2

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

例如

if (isset($foo)) {
    echo $foo;
}
Run Code Online (Sandbox Code Playgroud)

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

if (! isset($foo)) {
    throw new Exception('$foo not set');
}
Run Code Online (Sandbox Code Playgroud)