Ответ 1
Он должен быть @throws
не @throw
.
Если вы просто наберете /**
по строке функции или объявления класса var, она автоматически добавит вам базовый PHPDoc. Это как я заметил разницу.
Я не могу понять, почему 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;
}
Предупреждение не очень конкретное, я пробовал несколько вещей, таких как изменение типа возврата на "Объект", "Смешанный" или даже "int" (чтобы попробовать), но он не изменился. В чем проблема?
Он должен быть @throws
не @throw
.
Если вы просто наберете /**
по строке функции или объявления класса var, она автоматически добавит вам базовый PHPDoc. Это как я заметил разницу.
Если этот метод реализуется/переопределяется из родительского класса, где для него существует docblock, посмотрите, соответствуют ли ваши теги для обоих. Обычно теги родителя будут наследоваться дочерним элементом, так что если родительский метод docblock уже имеет те же теги (param, return, throws), то нет необходимости перечислить их в дочернем docblock, если они им не нужны сказать что-то другое, чем родитель.
Пожалуйста, обратитесь к этой ссылке https://blog.jetbrains.com/webide/2011/05/phpdoc-inspections/ Здесь указывается, что "инспекция сообщает о проблеме, если ряд параметров, описанных в комментарии PHPDoc и/или их типах, не соответствует соответствующей декларации функции или метода"