为啥 PhpStorm 会报“参数类型不匹配”错误?

Posted

技术标签:

【中文标题】为啥 PhpStorm 会报“参数类型不匹配”错误?【英文标题】:Why does PhpStorm report an "Argument type does not match" error?为什么 PhpStorm 会报“参数类型不匹配”错误? 【发布时间】:2016-11-23 05:14:14 【问题描述】:

我正在使用 PhpStorm 10.0.2 开发一个 PHP 7 项目。

每当我为具有标量类型(stringint、...)的类型提示的函数参数声明 phpDoc @param 时,我都会收到以下警告:

参数类型不匹配

以下是 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 的屏幕截图显示了可疑的“参数类型不匹配” - 在 PHPDoc 中针对具有两个强类型字符串参数的构造函数的提示:

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

【问题讨论】:

在过去的几年里,我每天都在使用 PHPStorm,不幸的是,它在不同版本之间充斥着诸如此类的恼人错误。 @Marty 你为什么一直使用它?怎么还没换? @BeetleJuice 做什么?没有其他任何东西具有相同的 PHPDoc 支持。 【参考方案1】:

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

【讨论】:

以上是关于为啥 PhpStorm 会报“参数类型不匹配”错误?的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中的 React Native 应用程序:导致参数类型不匹配

插入数据库时​​netbeans项目中的参数类型不匹配

为啥我安装的PHPSTORM运行不了PHP程序

phpstorm F2 功能很强劲

phpstorm F2 功能很强劲

为啥mybatis在执行查询时会报SQL语法错误?