问题标签 [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 投票
1 回答
81 浏览

php - 使 psalm 输出适应 Neomake

我正在尝试提出正确的错误格式以传递给 Neomake,以处理来自 psalm ( https://github.com/vimeo/psalm ) 的输出。

示例输出:

(双条仅在:lopen列表中可见,在控制台中不可见。不知道为什么。)

我试过的错误格式:

不知道我错过了什么。感谢任何提示或链接或其他任何东西。

0 投票
2 回答
948 浏览

php - 如何使用 Psalm 的 UnusedMethod 功能?

我正在尝试使用PHP 的 psalm 静态分析工具。据我了解,这个工具可以告诉我代码库中未使用的方法。但是,如果我创建一个简单的测试文件

然后运行psalm

psalter,

没有发现错误。

为什么 psalm 没有找到未使用的方法foo?是否需要额外的配置?还是我误解了这个工具的作用?我的psalm.xml文件在下面。

0 投票
1 回答
95 浏览

psalm-php - 如何解决这个 TypeDoesNotContainType 错误?

这是我的代码:

这是诗篇错误:

..但是php手册说ssh2_sftp可以返回false:

此方法返回一个 SSH2 SFTP 资源,用于与所有其他 ssh2_sftp_*() 方法和 ssh2.sftp:// fopen 包装器一起使用,失败时返回 FALSE。

我在这里错过了什么,或者我不明白什么?

0 投票
3 回答
273 浏览

php - 如何键入遍历混合数组的循环

鉴于此代码(https://psalm.dev/r/156e52eb66):

keys假设函数不受我们控制(在不同的项目中)并且它有效地返回mixed( ) 的数组,它会如何键入它array<array-key, mixed>

所以,一个人可能只会改变循环并围绕它。

甚至可能吗?

UPD:我报告了 https://github.com/vimeo/psalm/issues/2025

0 投票
2 回答
592 浏览

php - 诗篇:返回多种类型的句柄方法

编辑这是 Psalm 的事情,而不是 PHP MD 的事情。

我正在编写一个 Symfony 控制台命令。在其execute方法中,我使用该方法检索参数$input->getArgument('argument_name')。我将这个值传递给一个服务,它期望这个值是字符串类型的。

整体代码:

PHP MD Psalm 没有看到我已经确认这$identifier是一个字符串,然后将它作为参数传递给其中一个vehicleService方法并抛出PossiblyInvalidArgument错误,因为Argument 1 ... expects string, possibly different type array<array-key, string>|null|string provided.

如何确保 PHP MD 这是一个字符串?

0 投票
1 回答
142 浏览

php - 如何创建数组的交集类型

我要实现的简化如下:

https://psalm.dev/r/d08f3ea0d1

简而言之:我正在尝试键入一个函数,该函数接受一个数组,该数组是 2 other 的交集@psalm-types。也就是说:一个数组具有两种数组类型的字段(它们是唯一的并且保证是不同的)。

此代码符合预期 - 不进行类型检查:

真的没有办法,只能坚持运行时断言/检查吗?

重要提示:这个问题完全是关于静态类型的,我知道你可以在运行时检查它。

0 投票
1 回答
141 浏览

php - TwigFilter 可调用参数的诗篇错误

我从 psalm 得到这个错误,用于树枝扩展:

错误:InvalidArgument - src/Twig/CartExtension.php:44:17 - Twig\TwigFilter::__construct 的参数 2 需要 callable|null,array{App\Twig\CartExtension&static, string(getOfferDate)} 提供

有问题的代码是:

TwigFilter 签名是

树枝文档推荐这种格式

[$this, 'getOfferDate']

对于可调用的:https ://symfony.com/doc/current/templating/twig_extension.html

我怎样才能修复这个 psalm 错误或告诉 psalm 接受它?

0 投票
1 回答
36 浏览

php - 诗篇是否支持“这个”的@param-out?

@param-out是否可以使用forthis或来操作 Psalm 中的幻像类型self?例子:

一个用例可能是一个文件类,其幻像类型设置为Openor Closed,并调用$file->open();更改TOpen.

0 投票
1 回答
448 浏览

php - 如何让 Psalm 在 PHP 中推断出 100% 的代码库

目前正在运行的诗篇给了我:

Psalm 能够推断出 94.8665% 的代码库的类型

如何在无法推断类型的地方进行调试?我想要 100% 的类型覆盖率。

这是我的psalm.xml.dist配置:

谢谢您的支持。

0 投票
0 回答
34 浏览

php - 在 .phtml 文件中使用 psalm

我正在尝试使 psalm 对.phtml文件起作用。一切都很顺利,除了一件事。所有类(应该自动加载)都是未定义的。在普通的 php 类中,它们由 psalm 加载。

以下UndefinedDocblockClass给出CustomBlocks.

虽然添加OneRandomClass它不再给出该错误。

更新; 第二个示例没有给出该错误,因为 docblock 与以下类相关联并且 @var 在类 docblocks 中被忽略。