问题标签 [psalm-php]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
73 浏览

php - PhpStorm 属性和诗篇

我的服务器上有 PHP 8,我正在使用属性JetBrains\PhpStorm\ArrayShapeJetBrains\PhpStorm\Pure正如 PhpStorm 所建议的那样。

当我运行 psalm 时,它返回以下错误:

错误:UndefinedAttributeClass - .....:66:7 - 属性类 JetBrains\PhpStorm\ArrayShape

我有两个问题:

  1. 这个类是如何连接到项目的?我在作曲家自动加载器中找不到它们。
  2. 如何修复诗篇错误。(我可以将它们添加到我的 psalm 的引导文件中,但我不知道它们在哪里。我只在 中找到它们/snap/phpstorm/208/plugins/php/lib/php.jar
0 投票
1 回答
178 浏览

generics - 使用 psalm 扩展接口的泛型

我已经习惯使用 psalm,但我遇到了一个问题。我已经在 C# 中有这个结构,它对我有用。我真的不明白如何使用 psalm 解决这个问题。

我有一个ContextInterface和另一个实现它。

此外,我还有他们的策略界面。

还有一个实现接口的类:

对于getWidth()方法调用,我收到以下错误:

ERROR: ImpureMethodCall - 37:19 - Cannot call an possibly-mutating method SingleContextInterface::getWidth from a mutation-free context

psalm.dev上的示例

当然真实案例更复杂,包含更多接口。

0 投票
0 回答
55 浏览

php - 正确使用 Psalm 中一组类的模板注解

如何在 psalm 中使用模板注释。我有抽象类

例如实现

当然每个类都位于自己的文件中。e1Notify::occurred() 只能接收类型为 e1 的对象,该类型具有方法 v1() 和 v2()。并非所有的 aggregateChanged|eventAbstract 对象都具有相同的方法。所以 psalm 向我展示了关于方法 v1()、v2() 的错误 UndefinedMethod。

我需要解释一下 e1Notify 只接收类型为 e1 的对象。我认为我必须使用模板注释,但我不明白如何。

0 投票
2 回答
129 浏览

php - php psalm 配置和语法错误报告

我有一个简单的语法错误案例。它是这样的

所以,在参数 $c 之后有一个语法错误——一个多余的逗号(我使用 php7.3)。当我运行 psalm ./vendor/bin/psalm src/Foo.php --no-cache时,它表明这里没有任何问题。

我的问题是我是否缺少一些配置或其他东西,为什么 psalm 没有捕捉到那个简单的语法错误情况?

0 投票
1 回答
137 浏览

php - 如何在迭代期间注释 Laravel 集合元素

我正在考虑如何在 PhpStorm 中注释类型。我相信 PhpStorm 正在使用 Psalm 来解析类型,但我找不到如何注释类型以在这里获得建议:

在此处输入图像描述

$row在我的应用程序中将始终是Collection对象,我想在此处用注释标记它。

有谁知道如何做到这一点?

0 投票
2 回答
421 浏览

php - 诗篇多行关联数组注释

我正在使用 Psalm 样式注释来记录例如返回数组类型,例如:

这就像自动完成/静态分析的魅力,包括 PhpStorm。但是,这些行可能会变得非常长并且无法遵循,尤其是在涉及嵌套数组的情况下。

我正在寻找这个注释的多行语法,我可以有类似的东西:

然而,正如它所写的那样,这似乎不是有效的解析语法。是否有一些语法可以让我打破多行的定义?

0 投票
1 回答
23 浏览

php - Pagerfanta 模板导致诗篇错误

我正在尝试从 phpdoc 转移到 psalm,但基于模板的返回出现了奇怪的错误。

TooManyTemplateParams即使我设置了一个并且 Pagerfanta 在其定义中也设置了一个参数,这仍显示错误。

甚至 psalm 在线验证器也显示此错误: https ://psalm.dev/r/68b22e896f

我究竟做错了什么?

0 投票
1 回答
21 浏览

psalm-php - 如何让 Psalm 识别包含文件中的变量

我有一个包含在函数中的配置文件,如下所示:

问题是让 Psalm$config从配置文件中识别变量。可能的?最好使用数组形状表示法。

0 投票
1 回答
41 浏览

php - 诗篇检查“死亡”的呼唤

有没有办法配置 Psalm 调用dieexit导致错误?

我对大量使用这两个命令的代码库有疑问,并且希望至少避免人们添加不应该存在的新 die 命令。

0 投票
1 回答
49 浏览

php - 在 PHP 中,我如何键入提示使用字符串作为类名访问的类的实例

使用 Laravel,我正在遍历一系列类并对每个类的实例子集进行操作。这些类以字符串形式提供,例如:

我将如何输入提示$i