Wie gehe ich mit der Warnung "Methode nicht in Klasse gefunden" für magisch implementierte Methoden um?
Ich sitze auf einer großen Codebasis, die mehrere Klassen enthält, die Funktionalität durch magisch implementierte Methoden (mit__call
und__callStatic
). Zum Beispiel:
class Foo {
public function __call($name, $parameters) {
echo "You called $name().\n";
}
}
$f = new Foo;
$f->test(); // runs fine, but PhpStorm flags as a warning
Das Problem ist, dass PhpStorm denkt, dass dietest()
Methode ist nicht vorhanden, daher wird am Aufrufstandort eine Warnung ausgegeben. Dies ist ein wenig nervig, da der Code natürlich ausgeführt wird und sich wie erwartet verhält.
Ich habe den Schweregrad bereits herabgesetzt, indem ich die Option "Herabstufungsschweregrad, wenn __magische Methoden in der Klasse vorhanden sind" aktiviert habe, aber ich würde es vorziehen, entweder:
Deaktivieren Sie diese Funktion für bestimmte Klassen vollständignur, oderarbeite lieber mit der IDE als dagegen - versorge sie mit den Informationen, die ich bereits habe, damit unsere Ansichten übereinstimmenIst einer der oben genannten möglich? Wenn das so ist, wie?
Zusätzliche Bonusfrage: Betrachten Sie den Fall, in dem Methodenaufrufe verkettet werden.
$f = new Foo;
$f->test()->chain()->moreChain(); // potentially runs fine
Vorausgesetzt, dass der Zauberruf an$f->test()
Gibt etwas Passendes zurück. Die nachfolgenden (möglicherweise, aber nicht unbedingt, auch magischen) Aufrufe funktionieren einwandfrei. Da es jedoch keine Möglichkeit gibt, weiß ich von der IDE was zu erzählentest()
Gibt zurück, dass es den Rest der Aufrufkette als voll mit fehlenden Methoden kennzeichnet. Und um die Sache noch schlimmer zu machen, gilt die Einstellung "Herabstufungsschweregrad" nicht für diese Warnungen, da die IDE nicht weiß, welche Klasse diese Zwischenobjekte haben sollen.
Gibt es eine Lösung, die auch diesen Fall abdecken kann?
AktualisierenAuch wenn die magischen Methoden mit dokumentiert werden@method
Anmerkungen scheinen zu funktionieren, ich muss davon ausgehen, dass es derzeit einige Probleme mit diesem Ansatz gibt, da ich nur ein wenig Arbeit benötigte, um auf diese verwandten Fehler zu stoßen:
Ich hoffe, dass sie sie in einem angemessenen Zeitrahmen reparieren.