Ich habe eine Klasse, die von einer Oberklasse geerbt und die Oberklasse hat eine statische find()
Methode, die Instanzen von die Unterklasse (aktives Aufzeichnungsmuster).In PHPStorm, wie kann ich Typhinweis funktionieren, wenn ich eine Superklassenmethode habe, die einen anderen Typ aus jeder Unterklasse zurückgibt
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);
Im Moment ist der Docblock nicht sehr gut für Code-Vervollständigung und Typ-Hinting. Ich kann die Oberklasse nicht als Rückgabetyp verwenden, da die Unterklassen aufgrund von DB-Spalten unterschiedliche Methoden haben.
Wie kann ich PHPSstorm angeben, dass die Superklasse find()
eine Instanz der Unterklasse zurückgibt, von der sie aufgerufen wird, damit die Codevervollständigung funktioniert?
Verwenden Sie '@ method' in Ihrer' ModelClass', um die 'find() '- Methode der Eltern mit der gewünschten Signatur erneut zu deklarieren. – LazyOne