【发布时间】:2023-01-09 19:16:52
【问题描述】:
我有一个检查值是否为 null 的函数,在我调用该函数后,我使用了显然不为 null 的值。
但 phpstan 仍然说它可能为空。
你们有没有让 phpstan 知道这个函数的结果的解决方案。
protected ?string $filterCacheKey = null;
protected function usesFilterCaching(): bool
{
return $this->filterCacheKey !== null;
}
方法 Illuminate\Contracts\Session\Session::get() 的参数 #1 $key 需要字符串,string|null 给定。
if ($this->usesFilterCaching() && $this->request()->method() === Request::METHOD_GET) { $sessionCacheFilters = $this->filterStore()->get($this->filterCacheKey); return Arr::get($sessionCacheFilters, $filterName, $defaultChecked); }
【问题讨论】:
-
$this->filterCacheKey的签名是什么?就像您在代码运行期间检查它一样,静态分析使用的签名可能表明它可以为空。 -
@NigelRen 好的评论我已经添加了它
-
我认为问题可能是您正在检查是否设置了密钥,然后使用它获取不存在的数据。我认为您应该检查键是否存在并且存储在该键索引处是否有价值,然后才恢复