如何让IDE注册此方法返回参数的实例?
所以我可以这样做:
Class::models()->getModel('newModel')->newModelMethodHere()?
代码有效,但PHPStorm中没有自动完成功能。
/**
* Returns the object of the model
*
* @var $this->_models[$model] $model
* @param string object $model
* @throws Exception
* @return object
*/
public function getModel($model)
{
if (array_key_exists($model, $this->_models) && class_exists($model) && is_object($this->_models[$model])
&& $this->_models[$model] instanceof $model) {
if (is_a($this->_models[$model], $model)) {
/* @var $this->_models[$model] $model */
return ($this->_models[$model]);
}
}
throw new Exception('Model ' . (string)$model . ' is not registered correctly.');
}
答案 0 :(得分:0)
您应该修复评论栏。返回应该澄清什么对象返回。
/**
* Returns the object of the model
* ...
* @return ModelNameClass
*/
答案 1 :(得分:0)
我不得不改变我的代码,但我设法让它工作:
namespace PHPSTORM_META {
$STATIC_METHOD_TYPES = array(
\ClassName::getModel('') => [
"" == "@",
],
);
}
在PHPStorm项目根目录下的新.phpstorm.meta.php文件中。
答案 2 :(得分:0)
方法getModel()
可能会返回不同类型的对象,具体取决于提供的参数。虽然这不是一个好习惯,但有一个简单的技巧可以让PhpStorm帮助您完成自动完成:将getModel()
返回的值存储到变量中并使用@var
注释来告诉关于其类型的PhpStorm:
/** @var newModel $model */
$model = Class::models()->getModel('newModel');
// Here PhpStorm will be able to help you with its auto-complete
$model->newModelMethodHere()?