如果 属性 在进一步检查之前未被修改,如何告诉 psalm 保存 getter 状态?

How to tell psalm to save getter state if property wasn't modified before the further checks?

class A
{
    private ?string $x = null;

    public function getX(): ?null
    {
        return $this->x;
    }
}

class B
{
    public function __construct(string $y)
    {
        // Property initialization...
    }
}

$a = new A();
if ($a->getX() !== null) {
    $b = new B($a->getX());
}

对于此代码片段,psalm 将 return 出现类似 PossiblyNullOperand 或类似的错误。我知道这是一种预期的行为,可以这样解决:

$a = new A();
if (($x = $a->getX()) !== null) {
    $b = new B($x);
}

但是 psalm 中是否有一个配置参数,它会忽略像 getters 这样总是 return 相同结果的方法的这些错误?

诗篇版本:4.18.x

Psalm 需要知道该函数具有一致的 return 值。

这是你可以用@psalm-mutation-free描述的东西: https://psalm.dev/r/e3906e5985