Das ist neu in PhpStorm 2020.2

Unterstützung für Union-Typen (PHP 8), neue PHP-Kontrollfluss-Engine, Extract-Class-Refactoring, vollständige Unterstützung für GitHub-Pull-Requests, neues Inspektions-Widget und OpenAPI-Unterstützung.

Union-Typen aus PHP 8

Die Unterstützung von Union-Typen bildet den Auftakt für die PHP-8-Unterstützung. In PHP 8.0 können für Eigenschaften, Argumente und Rückgabewerte mehrere Typen deklariert werden. PhpStorm bietet bereits jetzt vollständige Unterstützung für diese Funktion und kann Ihnen bei der Migration helfen.

PHPDoc in native Union-Typen konvertieren

PHPDoc in native Union-Typen konvertieren

Union-Typen konnten bisher über PHPDoc implementiert werden, und PhpStorm markiert jetzt diese Verwendungen.

Mit einem Quick-Fix (Alt+Enter) können sie in native Union-Typen konvertiert werden.

Dies funktioniert überall, wo Union-Typen verwendet werden können, etwa in Funktionsargumenten, Rückgabetypen und Eigenschaften. Bei Eigenschaften werden auch Standardwerte berücksichtigt.

Sprachversion auf PHP 8 umstellen

Sprachversion auf PHP 8 umstellen

Um die PHP-8-bezogenen Funktionen zu aktivieren, stellen Sie mit einer der folgenden Methoden die Sprachversion auf PHP 8 um:

  • Verwenden Sie den Alt+Enter-Quick-Fix direkt im Code-Editor.
  • Gehen Sie zu Preferences | Languages & Frameworks | PHP und verwenden Sie die Liste PHP language level.
  • Geben Sie die geforderte PHP-Version in composer.json an – PhpStorm übernimmt diese Einstellung automatisch.
Typvalidierung durchführen

Typvalidierung durchführen

PhpStorm analysiert Aufrufe, ermittelt mögliche Typen und hebt Problembereiche in Bezug auf Union-Typen hervor.

Die Prüfungen funktionieren auf allen Ebenen: Eigenschaften, Argumente und Rückgabewerte.

In komplexem Code können Sie dadurch Probleme auf den ersten Blick erkennen. PhpStorm hebt Stellen, die Ihre Aufmerksamkeit benötigen, noch vor der Ausführung hervor.

Duplizierte und redundante Typen erkennen

Duplizierte und redundante Typen erkennen

Es gibt viele Typkombinationen, die unzulässig oder redundant sind. Zum Beispiel:

  • bool|false
  • Foo|Foo
  • object|User
  • iterable|array oder iterable|Traversable

All diese Kombinationen werden von PhpStorm als ungültig markiert.

Nullbare Typen verwenden

Nullbare Typen verwenden

Bei der Angabe eines einzigen nullbaren Typs erlaubt PHP 8 sowohl die Schreibweise ?Typ als auch Typ|null.

Werden jedoch mehrere Typen mit null kombiniert, ist ?Typ1|Typ2 aufgrund der Mehrdeutigkeit nicht zulässig.

PhpStorm hebt diese Verstöße hervor und bietet per Alt+Enter einen Quick-Fix zur Korrektur an.

Varianzregeln befolgen

Varianzregeln befolgen

Bei der Vererbung können Sie in PHP Typen ändern, wenn Sie die folgenden Grundregeln befolgen:

  • Parametertypen sind kontravariant, d. h. sie können erweitert werden.
  • Rückgabetypen sind kovariant, d. h. sie können nur eingeschränkt werden.
  • Eigenschaftstypen müssen denselben Typ aufweisen.

Wenn Sie mit PhpStorm arbeiten, müssen Sie sich diese Regeln zum Glück nicht merken: Die IDE überprüft den Code für Sie und markiert eventuelle Verstöße.

Pseudotyp „false“ verwenden

Pseudotyp „false“ verwenden

In PHP 8 wird es einen speziellen Pseudotyp false geben, der nur in Union-Typdeklarationen verwendet werden kann.

Dieser wird in der Standardbibliothek oft verwendet, zum Beispiel in strpos() oder array_search(). Der Typ kann verwendet werden, um ein negatives Ergebnis zu repräsentieren.

PhpStorm markiert fehlerhafte Verwendungen und berücksichtigt dabei die Typinferenz.

Redundantes PHPDoc entfernen

Redundantes PHPDoc entfernen

Nach dem Hinzufügen einer nativen Union-Typdeklaration kann ein PHPDoc überflüssig sein, da es keine zusätzlichen Informationen enthält.

Sie können solche Vorkommen jetzt mit Alt+Enter per Quick-Fix entfernen.

Neue Kontrollfluss-Engine

Bedingung immer wahr

Bedingung immer wahr

PhpStorm kann jetzt komplexe Codepfade analysieren und feststellen, ob die Bedingung in einem if-else-Block Sinn ergibt oder redundant ist.

Ergebnis von 'instanceof' ist immer wahr

Ergebnis von 'instanceof' ist immer wahr

Dies funktioniert ähnlich wie die Bedingungsprüfung. PhpStorm erkennt, ob eine instanceof-Überprüfung sinnvoll ist oder aber aufgrund des abgeleiteten Typs in der Typhierarchie immer Wahr ergibt.

Neue Aktion: Type Info

Neue Aktion: Type Info

Mit dieser neuen Aktion können Sie sich den abgeleiteten Typ des ausgewählten Ausdrucks anzeigen lassen.

Beim Programmieren können Sie einen Ausdruck auswählen und mit der Tastenkombination Strg+Umschalt+P oder der Menüoption View | Type Info den Typ des Ausdrucks abfragen.

Ausdruck ist immer null

Ausdruck ist immer null

PhpStorm kann erkennen, wenn eine Variable garantiert immer null ist. In diesem Fall schlägt die IDE vor, den Ausdruck zu vereinfachen, um den Code klarer zu gestalten.

Verbesserungen bei Qualitätstools

Verbesserungen bei Qualitätstools
  • Qualitätstools können jetzt über Docker Compose ausgeführt werden.
    Fügen Sie dazu unter Preferences/Settings | Languages & Frameworks | PHP einen neuen Remote-Interpreter hinzu, der auf Docker Compose basiert.
  • Die Reformatierungsaktion für PHP-CS-Fixer und PHPCBF kann jetzt ebenfalls über einen Remote-Interpreter ausgeführt werden.
  • Wenn in der Datei ruleset.xml von PHP_CodeSniffer der Abschnitt exclude-pattern vorhanden ist, berücksichtigt PhpStorm diese Vorgabe und analysiert keine Dateien im angegebenen Pfad.

Composer-Verbesserungen

Composer-Abhängigkeiten können im Editor direkt in der composer.json-Datei verwaltet werden.

Unterstützung für benutzerdefinierte Satis/Packagist-Pakete

Unterstützung für benutzerdefinierte Satis/Packagist-Pakete

Wenn im Abschnitt repositories benutzerdefinierte Quellen angegeben sind, funktioniert die Completion auch für benutzerdefinierte Pakete.

Ein Randleistensymbol informiert über den aktuellen Caching-Status von benutzerdefinierten Repositories.

Completion für mehrere Versionen

Completion für mehrere Versionen

Wenn ein Paket mehrere per Komma oder Pipe (||) getrennte Versionen hat, bietet PhpStorm die Completion für alle verfügbaren Versionen des Pakets an.

Bisher war nach Eingabe von ~, ^ oder >= keine Completion mehr verfügbar. Dies wurde korrigiert, und die Completion in composer.json funktioniert jetzt auch in diesem Fall wie erwartet.

Schnellzugriff auf Einstellungen von Tools, die als Abhängigkeiten hinzugefügt wurden

Schnellzugriff auf Einstellungen von Tools, die als Abhängigkeiten hinzugefügt wurden

PhpStorm bietet zahlreiche Integrationen mit Tools von Drittanbietern. Wenn ein unterstütztes Tool in composer.json deklariert ist, wird jetzt in der Randleiste daneben ein Schraubenschlüsselsymbol angezeigt. Mit einem Klick darauf können Sie direkt den entsprechenden Abschnitt in den Einstellungen aufrufen.

Refaktorierung Extract Class

Refaktorierung Extract Class

Wenn eine Klasse durch viele nebensächliche Aufgaben überfrachtet ist, können Sie sie jetzt refaktorieren, indem Sie Methoden und Eigenschaften mit dem Refactoring Extract Class in eine neue Klasse auslagern.

Wählen Sie die Funktion, Methode oder Eigenschaft aus, die Sie auslagern möchten, drücken Sie Strg+T und wählen Sie Extract class.

Das Refactoring erstellt eine neue Datei, instanziiert ein Objekt der Klasse im Konstruktor und passt die Verwendungen automatisch an.

Verbesserte Befehlszeilentools

Verbesserte Befehlszeilentools

Die PHP-Befehlszeilentools unterstützen jetzt Remote-Interpreter.

Unter Preferences/Settings | Tools | Command Line Tool Support können Sie einen neuen Tooleintrag hinzufügen und einen der konfigurierten Remote-Interpreter auswählen.

Laravel Artisan wird jetzt automatisch erkannt! Dies bedeutet, dass Sie nach dem Öffnen eines Laravel-Projekts sofort Strg-Strg drücken und mit der Befehlseingabe beginnen können. PhpStorm bietet dann Completion-Vorschläge für verfügbare Befehle.

Neue Inspektionen

Array nur mit Schreibzugriff verwendet

Array nur mit Schreibzugriff verwendet

Wenn irgendwo im Code ein Array deklariert und mit Daten gefüttert wird, die jedoch nie gelesen werden, ist das Array in der Regel redundant und stellt einfach nur „Rauschen“ dar.

Die Inspektion erkennt solche Fälle und schlägt Ihnen vor, das Array zu entfernen, um den Code aufzuräumen.

Typisierte Eigenschaft möglicherweise nicht zugewiesen

Typisierte Eigenschaft möglicherweise nicht zugewiesen

Wenn eine typisierte Eigenschaft keinen Standardwert hat, wird sie als nicht initialisiert betrachtet. Beim Lesen nicht initialisierter Eigenschaften wird ein TypeError ausgelöst (außer wenn die magische Methode __get() definiert ist).

PhpStorm erkennt nicht initialisierte Eigenschaften und markiert Code, der diese Eigenschaften ausliest.

Vollständige Unterstützung für GitHub-Pull-Requests

Der gesamte Pull Request-Workflow kann jetzt in PhpStorm erledigt werden – Sie müssen nicht mehr zu einem Browser wechseln. Sie können Pull-Requests verwalten, den zeitlichen Verlauf und die Inline-Kommentare anzeigen, Kommentare und Reviews hinzufügen und Änderungen übernehmen.

Vollständige Unterstützung für GitHub-Pull-Requests

Um mit GitHub-Pull-Requests zu arbeiten, öffnen Sie das Toolfenster Pull Requests über die Symbolleiste oder im Hauptmenü unter VCS | Git | View Pull Requests.

Wählen Sie dann einen Pull-Request von der Liste aus, um alle Details anzuzeigen: Nachricht, Branch-Namen, Autor usw.

Von hier aus können Sie den Review-Prozess starten, indem Sie die geänderten Dateien überprüfen und die Änderungen kommentieren – auf Commit- oder Zeilenebene.

Auch das Mergen von Pull-Requests ist direkt in der IDE möglich. Sie müssen dazu nicht aus dem Pull-Request erst einen lokalen Branch erstellen – das Mergen ist direkt möglich.

OpenAPI-Unterstützung

PhpStorm 2020.2 unterstützt das Plugin OpenAPI Specifications. Dies ist ein von JetBrains entwickeltes kostenloses Plugin, das in OpenAPI-Spezifikationsdateien (openapi.yaml/openapi.json und swagger.yaml/swagger.json) Completion, Navigation und Validierung implementiert.

OpenAPI-Unterstützung

Das Plugin bietet außerdem:

  • Swagger-UI-Integration
  • Codegenerierung.
  • Integrierte Struktur-Diffs zwischen OpenAPI-Spezifikationen
  • Randleistensymbole zum Erstellen von HTTP-Client-Anfragen anhand der Spezifikation
  • Auto-Completion für Endpunkte im HTTP-Client

Neu: Inspektions-Widget und Problemansicht

Neu: Inspektions-Widget und Problemansicht

In der oberen rechten Ecke des Editors finden Sie ein brandneues Inspektions-Widget, das die Probleme in der aktuellen Datei zusammenfasst.

  • Klicken Sie auf die Pfeile, um zwischen den Problemen zu wechseln oder verwenden Sie die Tastenkürzel F2 / Umschalt+F2.
  • Klicken Sie auf das Widget, um die Liste aller Probleme in der Datei im Problems-Toolfenster zu öffnen.
  • Bewegen Sie den Mauszeiger auf das Widget, um das Popup-Fenster mit den Einstellungen anzuzeigen, und wählen Sie aus, welche Probleme markiert werden sollen.

Web-Technologien

Alle neuen Funktionen und Verbesserungen von WebStorm 2020.2 sind auch in PhpStorm 2020.2 verfügbar – entweder als integrierte Funktionen oder als kostenlose Plugins, die im Plugin-Marketplace zur Verfügung stehen.

Prettier als Standard-Formatierungsengine in JavaScript-Projekten

Sie möchten Prettier anstelle des integrierten Formatierers verwenden, um Ihren Code in Form zu bringen? Dieses Update macht es Ihnen noch leichter als zuvor. Aktivieren Sie einfach das neue Kontrollkästchen On code reformat, und die IDE verwendet ab sofort Prettier für die Neuformatierung der Dateitypen .js, .ts, .jsx und .tsx. Weitere Dateitypen lassen sich auf einfache Weise hinzufügen.

Erstklassige Vue.js-Unterstützung

Nuxt.js-Unterstützung, Vue-spezifische Codestil-Einstellungen, Verbesserungen bei der Verwendung von Vue in TypeScript-Projekten – das sind nur einige der Neuerungen, die wir im Lauf des vergangenen Jahres eingeführt haben. Damit bietet PhpStorm eine umfassendere Vue-Unterstützung als je zuvor!

Sparen Sie Zeit mit neuen Funktionen für die JavaScript-Programmierung

Neue, intelligente Intentions (Alt+Enter) helfen Ihnen dabei, einige Aktionen schneller auszuführen. Zum Beispiel können Sie jetzt eine for-Schleife mit numerischem Index mühelos in eine forEach-Arraymethode umwandeln. Das Lesen von Dokumentationskommentaren in JavaScript- und TypeScript-Dateien ist ebenfalls einfacher geworden, da diese jetzt direkt im Editor gerendert werden können, um Ablenkungen zu minimieren.

Versionsverwaltung

Unterstützung für Git-Installation in WSL 2

Unterstützung für Git-Installation in WSL 2

PhpStorm 2020.2 unterstützt Git-Installationen in WSL 2 bei der Arbeit mit Projekten auf Linux- und Windows-Dateisystemen.

Die IDE kann je nach Speicherort des Projekts zwischen den Git-Programmdateien wechseln. Wenn Sie ein Projekt in WSL öffnen (über den Pfad \\wsl$), wechselt die IDE automatisch zu Git in WSL, und Sie können alle Git-bezogenen Funktionen in der IDE verwenden.

Neue Benutzeroberfläche zum Vergleichen von Branches

Wenn Sie zwei Branches vergleichen möchten, um festzustellen, welche Commits nicht zueinander gehören, zeigt PhpStorm 2020.2 die Logs im Editor statt im Git-Toolfenster an. Dadurch ist genügend Platz vorhanden, um alle Informationen anzuzeigen.

Wählen Sie im Git-Branches-Popup-Menü VCS | Branches die Aktion Compare with Current.

Aktion Drop Commit

Aktion Drop Commit

Sie können jetzt redundante lokale Commits unkompliziert entfernen, indem Sie sie auf der Log-Registerkarte des Git-Toolfensters auswählen und im Kontextmenü auf Drop Commit klicken.

Lokale Commits squashen

Lokale Commits squashen

Sie haben auch die Möglichkeit, mehrere lokale Commits zu einem einzigen Commit zu kombinieren, um beispielsweise den Commitverlauf vor dem Pushen zu bereinigen.

Öffnen Sie im Git-Toolfenster die entsprechenden Commits und wählen Sie dann im Kontextmenü Squash Commits….

Die IDE führt hinter den Kulissen einen interaktiven Rebase-Vorgang durch.

Datenbank-Tools

Schauen Sie sich auch die Neuerungen in DataGrip 2020.2 an – alle neuen Funktionen sind auch in PhpStorm verfügbar.

Separater Editor für Zellenwerte

Separater Editor für Zellenwerte

Wenn Ihre Zelle einen großen Wert enthält, können Sie diesen jetzt in einem separaten Bereich anzeigen oder bearbeiten. Sie können außerdem auf der rechten Symbolleiste den Soft-Wrap-Modus ein- und ausschalten. Nutzen Sie die ganze Leistungsfähigkeit unseres Code-Editors für Ihre Daten.

Google-BigQuery-Dialekt

Google-BigQuery-Dialekt

Wir haben einen neuen SQL-Dialekt hinzugefügt: Google BigQuery. Die vollständige Unterstützung von BigQuery lässt zwar noch ein wenig auf sich warten, aber der Anfang ist jetzt gemacht. Bisher kann PhpStorm bei der Verwendung von Google BigQuery Ihre Abfragen korrekt hervorheben und Programmierunterstützung bereitstellen.

DML-Vorschau

DML-Vorschau

Sie können sich die Abfrage anzeigen lassen, die Ihren im Dateneditor vorgenommenen Änderungen entspricht. Die neue DML-Schaltfläche ist dann aktiv, wenn es ungespeicherte Änderungen gibt. Diese Abfrage entspricht nicht in jedem Fall exakt der SQL-Abfrage, die zur Änderung Ihrer Daten ausgeführt wird, da PhpStorm einen JDBC-Treiber zum Aktualisieren von Tabellen verwendet. Meistens sind die beiden Abfragen jedoch identisch.

Weitere Verbesserungen

  • Getter und Setter anpassen
  • Resolve auf alle Projekte in einem Fenster anwenden
  • Neue Aktion: Einfügemarken am Ende jeder ausgewählten Zeile hinzufügen