我有一个继承自超类的类,其中超类具有静态find()方法,该方法实例化子类的实例(活动记录模式).
class ActiveRecordClass {
/**
* @return mixed
*/
public static function find() {
// Code returns instance of called class
}
}
class ModelClass extends ActiveRecordClass {
}
// returns instance of ModelClass, but PHPStorm doesn't realise
ModelClass::find($model_id);
Run Code Online (Sandbox Code Playgroud)
目前,docblock对于代码完成和类型提示并不是很好.我不能使用超类作为返回类型,因为子类由于DB列而具有不同的方法.
如何向PHPStorm指示超类find()方法返回它所调用的子类的实例,以便代码完成有效?
找到了:
class ActiveRecordClass {
/**
* @return static
*/
public static function find() {
// Code returns instance of called class
}
}
Run Code Online (Sandbox Code Playgroud)
似乎@return selfvs的@return static工作方式与关键字通常所做的相同.@return self没有选择具体子类上可用的方法,但@return static使自动完成功能很好.
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |