关于这篇文章:
在 PHPStorm 中,当我有一个从每个子类返回不同类型的超类方法时,如何使类型提示起作用 https://stackoverflow.com/q/26470325/178728,
这是关于 PHPStorm 类型提示中的一种边缘情况。
请尝试跟随 - 我会尽力尽可能清楚:
所以,我有这个基本抽象类:
abstract class myBaseController {
protected $_model;
...
}
另一个类继承自:
class myController extends myBaseController {
$hello = 'hello';
...
}
并由第三类进一步扩展:
class myNewController extends myController {
public $myvar;
$this->_model = new myModel();
...
public function myFunc(){
// !!form is underlined as: "Method 'form' not found in class"!!
$form = $this->_model->form($new_variable);
}
下面是 myModel 类的示例:
class myModel extends BaseModel {
$world = 'world';
public function form($my_variable) {
do_something();
}
我真正的问题是如何正确地“phpdoc”这种情况:
一个子类myNewController
正在使用继承的变量_model
分配另一个类的实例myModel
它有一个独特的功能form
。 PHPStorm 应该如何正确了解form
in myNewController
?
到目前为止我的解决方案涉及记录myBaseController
像这样:
abstract class myBaseController {
/**
* @var object
*/
protected $_model;
...
}
然而我认为@var object
太宽泛了(PHPStorm 找不到它的声明),我的猜测是应该有更好的(更具体的)方法来做到这一点。
也许我们可以这样做:
/**
* @var BaseModel
*/
PHPStorm 是否有办法查看该方法的子类。
有任何想法吗?
谢谢大家。