为什么我在PhpStorm中通过此代码获得PHPDoc警告

时间:2012-03-22 13:18:33

标签: php warnings phpdoc phpstorm

我无法理解为什么PhpStorm会对此方法发出以下警告PHPDoc comment does not match function or method signature

/**
 * Create a new instance of the class
 * @param string $classname Class to instantiate
 * @return object the instance
 * @throw FactoryException If the class is not instantiable
 */
private function newInstance($classname) {
    $reflectionClass = new \ReflectionClass($classname);
    if (! $reflectionClass->isInstantiable()) {
        throw new FactoryException("The class $classname is not instantiable.");
    }
    return new $classname;
}

警告不是很具体,我尝试了几种方法,例如将返回类型更改为“对象”,“混合”或甚至“整数”(尝试),但它没有改变。这有什么问题?

2 个答案:

答案 0 :(得分:9)

应该是@throws而不是@throw

如果您只是在函数或类var声明的行上键入/**,它将自动为您插入一个基本PHPDoc。这就是我注意到差异的原因。

enter image description here

答案 1 :(得分:1)

如果此方法碰巧从存在docblock的父类实现/覆盖,请查看您的标记是否在两者之间匹配。通常,父级中的标记将由子级继承,这样如果父级的方法docblock已经具有相同的标记(param,return,throws),则没有必要将它们列在子级的docblock中,除非它们特别需要说一些与父母不同的东西。