问题标签 [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.
php - PhpStorm 属性和诗篇
我的服务器上有 PHP 8,我正在使用属性JetBrains\PhpStorm\ArrayShape
,JetBrains\PhpStorm\Pure
正如 PhpStorm 所建议的那样。
当我运行 psalm 时,它返回以下错误:
错误:UndefinedAttributeClass - .....:66:7 - 属性类 JetBrains\PhpStorm\ArrayShape
我有两个问题:
- 这个类是如何连接到项目的?我在作曲家自动加载器中找不到它们。
- 如何修复诗篇错误。(我可以将它们添加到我的 psalm 的引导文件中,但我不知道它们在哪里。我只在 中找到它们
/snap/phpstorm/208/plugins/php/lib/php.jar
)
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上的示例
当然真实案例更复杂,包含更多接口。
php - 正确使用 Psalm 中一组类的模板注解
如何在 psalm 中使用模板注释。我有抽象类
例如实现
当然每个类都位于自己的文件中。e1Notify::occurred() 只能接收类型为 e1 的对象,该类型具有方法 v1() 和 v2()。并非所有的 aggregateChanged|eventAbstract 对象都具有相同的方法。所以 psalm 向我展示了关于方法 v1()、v2() 的错误 UndefinedMethod。
我需要解释一下 e1Notify 只接收类型为 e1 的对象。我认为我必须使用模板注释,但我不明白如何。
php - php psalm 配置和语法错误报告
我有一个简单的语法错误案例。它是这样的
所以,在参数 $c 之后有一个语法错误——一个多余的逗号(我使用 php7.3)。当我运行 psalm
./vendor/bin/psalm src/Foo.php --no-cache
时,它表明这里没有任何问题。
我的问题是我是否缺少一些配置或其他东西,为什么 psalm 没有捕捉到那个简单的语法错误情况?
php - 诗篇多行关联数组注释
我正在使用 Psalm 样式注释来记录例如返回数组类型,例如:
这就像自动完成/静态分析的魅力,包括 PhpStorm。但是,这些行可能会变得非常长并且无法遵循,尤其是在涉及嵌套数组的情况下。
我正在寻找这个注释的多行语法,我可以有类似的东西:
然而,正如它所写的那样,这似乎不是有效的解析语法。是否有一些语法可以让我打破多行的定义?
php - Pagerfanta 模板导致诗篇错误
我正在尝试从 phpdoc 转移到 psalm,但基于模板的返回出现了奇怪的错误。
TooManyTemplateParams
即使我设置了一个并且 Pagerfanta 在其定义中也设置了一个参数,这仍显示错误。
甚至 psalm 在线验证器也显示此错误: https ://psalm.dev/r/68b22e896f
我究竟做错了什么?
psalm-php - 如何让 Psalm 识别包含文件中的变量
我有一个包含在函数中的配置文件,如下所示:
问题是让 Psalm$config
从配置文件中识别变量。可能的?最好使用数组形状表示法。
php - 诗篇检查“死亡”的呼唤
有没有办法配置 Psalm 调用die
或exit
导致错误?
我对大量使用这两个命令的代码库有疑问,并且希望至少避免人们添加不应该存在的新 die 命令。
php - 在 PHP 中,我如何键入提示使用字符串作为类名访问的类的实例
使用 Laravel,我正在遍历一系列类并对每个类的实例子集进行操作。这些类以字符串形式提供,例如:
我将如何输入提示$i
?