我的设置包括一个lib
带有类的view
文件夹和一个带有 PHP 文件的文件夹,它们会产生输出。视图被导入到View
与此类似的类中:
class View {
public function render(string $basename, Array $params) : string {
extract($params, EXTR_PREFIX_INVALID, 'v');
ob_start();
include sprintf('%s/views/%s.php', dirname(__DIR__), $basename);
$out = ob_get_contents();
ob_end_clean();
return $out;
}
}
在这种情况下,我基本上对 Psalm 有两个问题:
因为
View::render
它报告了一个UnresolvableInclude
. 我什至可以用类似的$basename
东西输入@param "view1"|"view2"|"about" $basename
没有效果。无法解决的包含仍然存在。
将
extract()
的内容放在$params
包含视图文件的本地范围内。这让我有<?=escape($foo)?>
我的视图文件中的“标签”带有
$params === ['foo' => 'bar']
. 然而,Psalm 并没有赶上这一点,并报告了很多UndefinedGlobalVariable
问题。
我的问题:如何告诉 psalm 有关视图文件和变量的信息?或者,我如何重新构建此代码以便 psalm 可以为我测试它?