首页 > 解决方案 > PhpStorm - 检查 NULL 值

问题描述

关于这个例子的问题:

<?php declare(strict_types=1);

class SomeTestClass
{
    /** @var string|null */
    private $name;

    /** @var string */
    private $sth;

    public function getName(): ?string
    {
        return $this->name;
    }

    public function setSomething(string $value): void
    {
        $this->sth = $value;
    }

    public function something(): void
    {
        $this->setSomething($this->getName());
    }
}

为什么PhpStorm 2018.3.5没有通知我有关something()使用可空值作为不应为空的方法参数的错误代码?我之所以问这个问题,是因为当$name属性为时null,我的应用程序中会出现错误。

版本与

public function something(): void
{
    /** @var string|null $name */
    $name = $this->getName();
    $this->setSomething($name);
}

也不起作用。

标签: phpphpstorm

解决方案


PhpStorm 在分析代码时不是很严格。例如,当通过构造函数注入属性值时,它在自动完成方法和属性时不查看声明的属性类型,而是查看注入构造函数的类型。

对于非常严格的分析,试试PHPStan。与 PhpStorm 不同,您可以轻松地将其添加到您的 CI 构建中。请参阅您的示例产生的错误


推荐阅读