PhpStorm type-hinting für Fabriken?
Habe ich code mehr oder weniger wie diese:
class Foo {
public static function factory($str) {
$class = "Foo_" . $str;
return new $class;
}
}
class Foo_Bar {
public function razzle() {
print "Foo_Bar->baz() was called";
}
}
$Obj = Foo::factory('Bar');
und ich möchte PhpStorm zu verstehen, dass $Obj
ist ein Foo_Bar
Objekt, so dass zum Beispiel, wenn ich den Typ $Obj->raz
, razzle()
für die Autovervollständigung.
Gibt es eine Möglichkeit, diese zu bekommen? Zu sagen, PhpStorm, dass die Funktion Foo::factory($str)
gibt ein Objekt vom Typ Foo_$str
? Meine Vermutung ist, dass die Antwort ist keine.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie kann dies tun, wenn Ihr Werk ist eine statische Methode. Es sollte gut funktionieren, für die Beispiele, die Sie zur Verfügung gestellt haben.
Mehr details und einige basic-Beispiel finden Sie hier: http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadaten
.phpstorm.meta.php
; 2) Es nicht abgeholt werden sofort -- schließen und neu-öffnen Sie das Projekt (Suche nach solchen Datei erfolgt auf Projekt laden; sobald die Datei gefunden wird, werden änderungen sollte es abgeholt werden sofort) -- dieses Verhalten wurde behoben in v7.Soweit ich weiß, kann man nicht machen, PHPStorm verstehen, was Foo gibt, weil es dynamisch ist. Allerdings kann man sicherlich sagen, PHPStorm, was Ihre $Obj-variable, indem Sie ein doc-Kommentar darüber, wie so:
Sollten Sie verwenden, phpstorm Metadaten, das funktioniert sowohl für statische und dynamische Aufrufe.
erstellen Sie eine Datei im Projekt root Verzeichnis und nennen Sie es
.phpstorm.meta.php
:Dank @LazyOne für den link.