Das ist neu in PhpStorm 2021.3

Als großes Update bringt PhpStorm 2021.3 zahlreiche Neuerungen mit: Unterstützung für das kürzlich veröffentlichte PHP 8.1, eine bessere Handhabung von PHP-Generics, Verbesserungen in den Bereichen Deployment, den HTTP-Client und VCS-Integration.

PHP 8.1

Eine neue Version des Interpreters wurde gerade veröffentlicht! Sehen Sie sich das Video an, in dem Brent Roose und Community-Mitglieder die neuen Sprachmerkmale vorstellen.

Enums

Enums gehören zu den am sehnlichsten erwarteten Funktionen von PHP 8.1.

Die Enum-Unterstützung wurde in PhpStorm 2021.2 eingeführt und umfasst Completion-Vorschläge und Validierung, um Sie vor einer falschen Verwendung zu schützen.

Ein Enum in PHP enthält eine Anzahl von Fällen, kann Methoden haben und kann als Type-Hint verwendet werden. In all diesen Fällen spart PhpStorm Ihnen mit Fehlerhervorhebungen und geeigneten Korrekturvorschlägen Zeit.

Schreibgeschützte Eigenschaften

Readonly properties are the properties that cannot be changed after initialization, that is, after a value is assigned to them.

PhpStorm 2021.3 hilft Ihnen, sicherzustellen, dass Sie schreibgeschützte Eigenschaften korrekt in Ihrem Code verwenden.

Eine dedizierte Inspektion überprüft, ob eine schreibgeschützte Eigenschaft nur in demselben Gültigkeitsbereich initialisiert wird, in dem sie deklariert wurde, entweder bereits in der Eigenschaftsdeklaration oder in einer Klassenmethode.

Da schreibgeschützte Eigenschaften immer typisiert sein müssen, prüft PhpStorm, ob eine Typdeklaration vorhanden ist.

Eine schreibgeschützte Eigenschaft kann keinen Standardwert haben, aber Sie können sie im Konstruktor als sogenannte „Promoted Property“ initialisieren, und PhpStorm bietet einen entsprechenden Quick-Fix dafür.

new-Operator in Initialisierern

In PHP 8.1 können Sie „new“ zum Initialisieren von Standardparameterwerten, statischen Variablen, globalen Konstanten und Attributargumenten verwenden.

PhpStorm überprüft solchen Code und hebt ungültige Verwendungen (zum Beispiel die Zuweisung eines neuen Objekts an eine Klassenkonstante oder Eigenschaft) hervor.

First-Class-Callables

In PHP 8.1 können Sie mithilfe der First-Class-Callable-Syntax eine Referenz auf eine beliebige Funktion erhalten. Statt $fn = Closure::fromCallable('strlen'); können Sie jetzt die kürzere Form $fn = strlen(...); verwenden. Wenn Sie in PhpStorm Alt+Enter drücken, bietet Ihnen die IDE einen Quick-Fix an, der Ihren Code auf die neue Syntax aktualisiert.

Reine Intersection-Typen

PHP 8.1 führt Intersection-Typen ein, deren Werte statt nur einer Typeinschränkung gleich mehrere erfüllen müssen.

PhpStorm bietet nun Code-Completion für diese Konstrukte an und überprüft, ob ein Intersection-Typ nicht mit einem Union-Typ kombiniert ist. Wenn Sie einen Intersection-Typ als PHPDoc-Annotation angegeben haben, interpretiert PhpStorm diese Angabe ebenfalls korrekt.

Neuer Rückgabetyp: `never`

PHP 8.1 führt den Typ never für Rückgabewerte ein. Wenn eine Funktion mit dem Typ never deklariert ist, dann gibt sie keinen Wert zurück, sondern löst entweder eine Ausnahme aus oder beendet die Ausführung des Skripts (wie die Funktionen die(), exit() oder trigger_error()).

Finale Konstanten

In PHP 8.1 können Sie Klassenkonstanten als final deklarieren, um zu verhindern, dass sie in abgeleiteten Klassen überschrieben werden, und PhpStorm überprüft solche Fälle.

Veraltete Merkmale

PHP 8.1 bringt aber nicht nur neue Sprachmerkmale mit, sondern auch einige „Deprecations“, die bestehende Sprachmerkmale als veraltet markieren und darauf abzielen, die Sprache konsistenter und benutzerfreundlicher zu machen. PhpStorm hilft Ihnen, solchen veralteten Code zu finden. Einige Beispiele:

Veraltete Verwendung von Serializable-Schnittstellen

Anstelle von Serializable-Schnittstellen wird die Verwendung der Magic-Methoden __serialize() und __unserialize() empfohlen. In PHP 8.1 können Sie Serializable zwar weiterhin verwenden, aber nur, wenn die implementierende Klasse sowohl __serialize() als auch __unserialize() verwendet. PhpStorm 2021.3 hebt inkorrekten Code hervor und bietet über Alt+Enter einen Quick-Fix zum Hinzufügen der Magic-Methoden an.

Eingeschränkte GLOBALS-Nutzung

PHP 8.1 schränkt die Verwendung der superglobalen Variable $GLOBALS ein: Es dürfen keine Schreib- oder Lese-/Schreiboperationen auf $GLOBALS als Ganzes vorgenommen werden. PhpStorm hebt solchen problematischen Code hervor.

Generics für PHP

PHP bietet auf der Sprachebene noch keine Unterstützung für Generics, aber ihre Verwendung über Annotationen ist bereits weit verbreitet. Bei der Arbeit mit Collections, Containern und Factories sowie in weiteren Anwendungsfällen machen Generics den Code sicherer und vorhersehbarer. PhpStorm 2021.3 erweitert die Generics-Unterstützung mittels @template-Annotation.

Verbesserte Unterstützung für Doctrine-Collections

PhpStorm kennt jetzt die IteratorAggregate-Schnittstelle und ermöglicht die problemlose Iteration über Doctrine-Collections.

Unterstützung für Laravel-Collections

In the upcoming Laravel release, the illuminate/collections package will support generics annotations. PhpStorm 2021.3 bietet eine bessere Code-Completion für solche Collections.

Ableitung generischer Typen aus dem Konstruktor

Wenn Sie bei einem generischen @template-Parameter in einem Konstruktor den Typ spezifizieren möchten, indem Sie ein Objekt als Argument übergeben, leitet PhpStorm jetzt daraus den richtigen Typ ab und stellt entsprechende Completion-Vorschläge bereit.

Refaktorierungen

Verschieben von Klassen per Drag-and-Drop

In früheren Versionen gab es nur eine Möglichkeit, eine Klasse zu verschieben und ihren Namensraum zu ändern: das Move-Refactoring (F6) im Code-Editor. In PhpStorm 2021.3 können Sie die Klasse stattdessen einfach in der Project-Ansicht mit der Maus verschieben. Auf diese Weise haben Sie die Projektstruktur während des Vorgangs im Blick. Außerdem können Sie mit dieser Methode mehrere Klassen oder ganze Ordner verschieben und sich darauf verlassen, dass PhpStorm alle Referenzen korrekt anpasst.

Funktion oder Methode in Inline-Code konvertieren

Mit dem Refactoring Inline method können Sie die Aufrufe einer Methode durch den Inhalt der Methode ersetzen und die Methode selbst löschen. In PhpStorm 2021.3 erhielt dieses Refactoring mehrere Verbesserungen und deckt jetzt noch mehr Fälle ab. So werden jetzt zum Beispiel auch nicht statische Methoden, Methodenketten und als Parameter übergebene Pfeilfunktionen/anonyme Funktionen unterstützt.

Um dieses Refactoring zu verwenden, legen Sie die Einfügemarke auf eine Methode und drücken Sie Strg+Alt+N. Wenn Sie eine private Methode haben, die nur einmal im Code verwendet wird, drücken Sie Alt+Enter und verwenden Sie den neuen Quick-Fix Inline Method.

Inline variable

Das Refactoring Inline variable kann Variablenreferenzen durch den Wert der Variable ersetzen. In PhpStorm 2021.3 unterstützt dieses Refactoring das Inlining von NOWDOC/HEREDOC-Variablen und ist durch verschiedene Verbesserungen einfacher zu verwenden.

Darüber hinaus erkennt PhpStorm jetzt Variablen, die nur einmal verwendet werden, und bietet für sie über Alt+Enter den Quick-Fix Inline Variable an.

Bereitstellung

rsync-Unterstützung

Wenn Sie fürs Deployment einen SFTP-Server verwenden, können Sie zum Hoch- und Herunterladen von Dateien und Ordnern rsync verwenden, da dies die Übertragungsgeschwindigkeit erheblich erhöht. Die entsprechende Option lautet Use rsync for download/upload im Bereich Advanced der Deployment-Server-Konfiguration.

Den Pfad zur rsync-Programmdatei können Sie unter Settings/Preferences | Tools | Rsync konfigurieren. Unter macOS und Linux sollte diese sofort verfügbar sein. For Windows, it is recommended to use Cygwin and OpenSSH.

Dateien nach Upload-Fehler erneut übertragen

Mit PhpStorm 2021.3 können Sie Dateien, die nicht hochgeladen werden konnten, erneut übertragen. Klicken Sie dazu im Toolfenster File Transfer auf den Link Retry.

Proxy-Unterstützung für SSH-Verbindungen

Sie können jetzt unter Settings/Preferences | Tools | SSH Configurations einen HTTP- oder SOCKS-Proxyserver für Ihre SSH-Konfiguration angeben.

Sie haben auch die Möglichkeit, den globalen IDE-weiten Proxy zu verwenden. Aktivieren Sie dazu unter Settings/Preferences | Appearance & Behavior | System Settings | HTTP Proxy das Kontrollkästchen Use global IDE proxy settings und geben Sie die Proxy-Daten an.

Standardserver eines Projekts schnell ändern

Ein neues Statusleisten-Widget in PhpStorm 2021.3 zeigt den aktuellen Standardserver an. Wenn Sie mehrere Umgebungen verwenden, können Sie direkt über das Widget zwischen ihnen wechseln, ohne die Einstellungen zu öffnen.

HTTP-Client

Binäre Antworten im HTTP-Client

Der HTTP-Client unterstützt jetzt binäre Antworten. Wenn eine Antwort ein Bild enthält, wird dieses direkt in der Antwortkonsole als Vorschau angezeigt.

Ausgabeumleitung in Datei oder Verzeichnis

Die Ausgabe des HTTP-Clients kann jetzt in eine benutzerdefinierte Datei oder ein benutzerdefiniertes Verzeichnis umgeleitet werden. Für erzwungene und „weiche“ Umleitungen stehen zwei Operatoren bereit:

  • Der Operator >> erstellt immer eine neue Datei und fügt dem Dateinamen den Suffix -n hinzu, wenn eine Datei mit diesem Namen bereits existiert.
  • Der Operator >>! überschreibt existierende Dateien.

Statt expliziter Dateipfade können Sie jetzt auch neue vordefinierte Variablen verwenden: {{$projectRoot}} zeigt auf den Projekt-Stammordner und {{$historyFolder}} zeigt auf den Anfrage-Verlaufsordner.

Benennung von HTTP-Anfragen

In PhpStorm 2021.3 können Sie Ihre HTTP-Anfragen benennen! Sie können den Namen als Kommentar mit @name oder als Text in der Anfrage-Trennzeile (###) angeben.

Sie können dann eine Anfrage durch Eingabe ihres Namens im Services-Toolfenster oder in den Dialogen Run Configuration, Run Anything oder Search Everywhere aufrufen.

Benutzererfahrung

Neues Bookmarks-Toolfenster

In PhpStorm 2021.3 wurden die Funktionalitäten Favorites und Bookmarks im Toolfenster Bookmarks zusammengeführt. Sie können eine Zeile, eine Datei oder einen Ordner durch Drücken von F11 mit einem Lesezeichen markieren. Alle hinzugefügten Lesezeichen werden im Bookmarks-Toolfenster angezeigt.

Quellcode-Vorschau für Verwendungen

Der Dialog Show Usages, den Sie mit Strg+Klick auf ein Symbol aufrufen können, kann nun eine Quellcode-Vorschau für eine Verwendung anzeigen. Um die Vorschau zu aktivieren, klicken Sie in der Symbolleiste auf Icon of the toolbar button.

VCS

Hervorgehobene Änderungen ausrichten

In den Einstellungen der Diff-Anzeige, die über das Zahnradsymbol zugänglich sind, haben wir die neue Option Align Changes Highlighting hinzugefügt. Diese Funktion verbessert die Lesbarkeit des Diffs insbesondere bei komplexen Änderungen, da die unveränderten Zeilen so ausgerichtet werden, dass sie nebeneinander angezeigt werden. Auf diese Weise lassen sich hinzugefügte oder entfernte Codeabschnitte klarer erkennen.

Checkout and Rebase onto Current für Remote-Branches

Mit der Aktion Checkout und Rebase onto Current können Sie den ausgewählten Branch auschecken und ein Rebasing auf dem aktuell ausgecheckten Branch durchführen. Während dies bisher nur bei lokalen Branches möglich war, kann PhpStorm 2021.3 diese Aktion auch auf Remote-Branches anwenden.

Neue Aktion Push All up to Here

Wenn Sie mehrere abgabereife Commits haben, während andere noch in Arbeit sind, möchten Sie vielleicht nur diejenigen pushen, von deren Qualität Sie überzeugt sind. PhpStorm 2021.3 bietet jetzt die Möglichkeit, einen Commit im Log-Tab des Git-Toolfensters auszuwählen und nur die Commits bis zu diesem ausgewählten Commit zu pushen. Wählen Sie den entsprechenden Commit aus, klicken Sie mit der rechten Maustaste darauf und wählen Sie die neue Aktion Push All up to Here.

VCS-Einstellungen mit neuer Struktur

Die Seite Version Control unter Settings/Preferences wurde für eine einfache Verwendung optimiert und listet jetzt alle verfügbaren Einstellungen auf. Der Git-Knoten wurde in Abschnitte unterteilt, die den wichtigsten Abläufen entsprechen: Commit, Push und Update. Mit Directory mappings gibt es einen separaten Knoten für Verzeichniszuordnungen. Da Hintergrundoperationen jetzt standardmäßig eingeschaltet sind, wurde der Knoten Background entfernt.