kst*_*tis 10 php phpdoc phpstorm
关于这篇文章:
在PHPStorm中,当我有一个从每个子类返回不同类型的超类方法时,如何进行类型提示工作,
这个是关于PHPStorm类型提示的边缘情况.请尽量跟进 - 我会尽力让自己尽可能清楚:
所以,我有这个基础抽象类:
abstract class myBaseController {
protected $_model;
...
}
Run Code Online (Sandbox Code Playgroud)
另一个类继承自:
class myController extends myBaseController {
$hello = 'hello';
...
}
Run Code Online (Sandbox Code Playgroud)
并由第三类进一步扩展:
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);
}
Run Code Online (Sandbox Code Playgroud)
下面是myModel类的示例:
class myModel extends BaseModel {
$world = 'world';
public function form($my_variable) {
do_something();
}
Run Code Online (Sandbox Code Playgroud)
我真正的问题是如何正确"phpdoc"这种情况:
子类myNewController
使用继承变量_model
来分配myModel
具有唯一函数的另一个类的实例form
.PHPStorm应该如何正确了解form
的myNewController
?
到目前为止我的解决方案涉及这样的记录myBaseController
:
abstract class myBaseController {
/**
* @var object
*/
protected $_model;
...
}
Run Code Online (Sandbox Code Playgroud)
但是我认为@var object
太宽泛(PHPStorm不会发现它的声明),我的猜测是应该有一个更好(更具体)的方法来做到这一点.
也许我们可以这样做:
/**
* @var BaseModel
*/
Run Code Online (Sandbox Code Playgroud)
如果PHPStorm有办法查看该方法的子类.
有任何想法吗?谢谢大家.
您可以使用@property
注释在子类中指定属性类型而不引入新代码:
/**
* @property myModel $_model
*/
class myNewController extends myController
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1893 次 |
最近记录: |