为什么PhpStorm报告"参数类型不匹配"错误?

时间:2016-07-20 05:53:35

标签: php phpstorm phpdoc php-7 type-hinting

我正在使用 PhpStorm 10.0.2 开展 PHP 7 项目。

每当我为一个函数参数声明一个PHPDoc @param,该参数具有标量类型(stringint,...)的类型提示时,我收到此警告:

  

参数类型不匹配

以下是PhpStorm抱怨的一些示例代码:

class HostConfig
{
    /**
     * @var string
     */
    private $hostname;
    /**
     * @var string
     */
    private $domainname;

    /**
     * Creates a new instance of hte HostConfig model.
     *
     * @param string $hostname   A host name (e.g. "dev", "int", "feature-xy")
     * @param string $domainname A domain name (e.g. "example.com")
     *
     * @throws \InvalidArgumentException If the given $hostname is empty
     * @throws \InvalidArgumentException If the given $domainname is empty
     */
    public function __construct(string $hostname, string $domainname)
    {
        if (strlen(trim($hostname)) === 0) {
            throw new \InvalidArgumentException("The host name cannot be empty");
        }

        if (strlen(trim($domainname)) === 0) {
            throw new \InvalidArgumentException("The domain name cannot be empty");
        }

        $this->hostname = $hostname;
        $this->domainname = $domainname;
    }
}

PhpStorm的屏幕截图显示可疑的" Argument类型与PHPDoc中的" -hint匹配,以获得具有两个强类型字符串参数的构造函数:

Screenshot of PhpStorm displaying an "Argument type does not match" hint for a string function parameter that has type hinting

有人知道我做错了什么或者这只是PhpStorm中的一个错误吗?

1 个答案:

答案 0 :(得分:4)

您的PHPStorm版本仅在PHP 7发布后7天发布,因此它对该语言的新功能(包括标量类型提示)的支持并不是很好。您遇到了IDE错误。您的问题是probably this one,已通过PHPStorm 10.0.3

修复