2017-03-07 1 views
1

enter image description hereKann ich PhpStorm mitteilen, wie der Rückgabetyp einer Funktion aussehen wird?

Also, wenn ich eine Funktion und in der PHPDoc habe angeben ich es wird ein SqsProcessResult Objekt zurück, dann rufe ich eine Funktion ein neues eines dieser Objekte zu erstellen, aber die PHPDoc der Funktion sagt Rückgabetyp Object (da es sich um eine generische Factory-Funktion handelt) wirft PhpStorm eine orangefarbene Warnung auf.

Kann ich mit Anmerkungen versehen oder anderweitig PhpStorm mitteilen, dass der Rückgabetyp SqsProcessResult ist?

Antwort

5

Ja, Sie können .. aber aufgrund der Art des Problems kann es nicht sauberste/elegant Lösung (zumindest das ist, was andere sagen können).

Nur wenige Optionen:


# 1. unterdrücken Sie diese Inspektion für diese Linie.

  • Platz caret in dem markierten Bereich und drücken Alt + Enter (oder das gleiche Menü über "Glühbirne" -Symbol erhalten)
  • Finden Sie den passenden Eintrag .. und drücken Arrow Right Taste (oder Mausklick auf das kleine Dreiecks-Symbol) um das Untermenü zu öffnen
  • Einmal dort - wähle Suppress for statement option - ein neuer Inline PHPDoc Kommentar wird direkt über der tat Zeile hinzugefügt, die PhpStorm anweist, diese spezifische Inspektion in der nächsten Zeile zu ignorieren.

Wird so etwas wie dieses:

/** @noinspection PhpIncompatibleReturnTypeInspection */ 
return \Yii::createObject(...); 
  • Vorteile: keine Warnung von IDE Seite
  • Nachteile: zusätzliche PHPDoc Kommentar zu IDE zu erfüllen (was die Umstände brauchten erwägt)

# 2. Verwenden Sie eine Zwischenvariable, die Sie Tipp eintippen können.

so etwas wie dieses Add anstelle der bestehenden einzige Zeile:

/** @var SqsProcessResult $res */ 
$res = \Yii::createObject(...); 
return $res; 
  • Vorteile: keine Unterdrückung Kommentar
  • Nachteile: zusätzliche Variable (und noch zusätzlicher PHPDoc Kommentar) für grundsätzlich ohne Grund

Dieser kann hauptsächlich in längeren Methoden verwendet werden, wo eine solche Variable (generische Object) am Anfang/Mitte des Funktionskörpers und dann erstellt wird später benutzt.


# 3. Spielen Sie mit .metadata Funktionalität und bieten Sie Auflösung Logik für tatsächliche \Yii::createObject() (so IDE wählt die richtige Klasse basierend auf Eingabeparameter).

https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata

Dies ist, wie schon einige Tools arbeiten: IDE Helfer für Laravel, Symfony Helfer, DI Container Helfer usw.

+1

Dank! Die erste Option ist, was ich gesucht habe, um zu vermeiden, Variablen rein für die Code-Inspektion zu erstellen. FYI die Annotation ist '/ ** @noinspection PhpIncompatibleReturnTypeInspection * /' –

+1

Überprüfen Sie aktualisierte Antwort - Option # 3. Wenn es richtig gemacht wird - es werden keine Kommentare benötigt (aber frag besser auf Yii spezielle Foren etc - sie sollten schon eine Lösung haben, würde ich annehmen). Nicht dieser ... aber unter diesen Zeilen: http://yiifeed.com/news?id=72 – LazyOne

Verwandte Themen