Das ist neu in PhpStorm 2023.3

Einige Highlights dieses großen Updates:

  • Preview-Phase von AI Assistant abgeschlossen
  • Pest-Unterstützung
  • Unterstützung von PHP 8.3
  • Verbesserte Symfony-Unterstützung
  • Allgemeine Verbesserungen der Bedienoberfläche

Previewphase von AI Assistant abgeschlossen General-Availability-Version

AI Assistant von JetBrains ist jetzt allgemein verfügbar und bietet eine Reihe von neuen und verbesserten Funktionen, die Ihre Produktivität bei der Arbeit mit JetBrains-IDEs steigern.

LLM-basierte Code-Completion

LLM-basierte Code-Completion

AI Assistant generiert jetzt mehrzeilige Codeblöcke für Sie. Beginnen Sie einfach mit der Eingabe in einer neuen Zeile, und wenn ein LLM-Vorschlag verfügbar ist, wird ein ausgegrauter Codeabschnitt eingeblendet. Drücken Sie Tab, um den Vorschlag anzunehmen.

Derzeit sind solche Vorschläge in Klassenkontexten und Funktionsdefinitionen verfügbar.

Generierung von Testcode

Generierung von Testcode

AI Assistant kann auch Tests für Klassenmethoden generieren. Legen Sie die Einfügemarke auf die Klassenmethode, die Sie mit Unit-Tests prüfen möchten, und drücken Sie Alt+Enter. Wählen Sie AI Assistant und dann Generate Unit Tests.

Codegenerierung im Editor

Codegenerierung im Editor

Bisher konnten Sie den KI-Chat nutzen, um Codeabschnitte zu generieren. Jetzt können Sie mit der Aktion AI Assistant | Generate code… eine Eingabeaufforderung direkt im Editor öffnen. Sie werden aufgefordert, den Code zu beschreiben, den Sie generieren möchten. Anhand dieser Beschreibung unterbreitet Ihnen AI Assistant Vorschläge, die Sie als Ganzes oder teilweise übernehmen können.

KI-gestützte Fehlererklärungen in der Konsole

KI-gestützte Fehlererklärungen in der Konsole

Wenn Sie ein PHP-Skript, eine Run-Konfiguration oder eine Composer-Aktion ausführen, kann es vorkommen, dass die Ausführung aus irgendeinem Grund fehlschlägt. AI Assistant unterstützt Sie jetzt dabei, die Ursache des Problems zu ermitteln. Klicken Sie in einem Stack-Trace oder einer Fehlermeldung auf die Schaltfläche Explain with AI, um eine KI-generierte Erklärung zu erhalten.

Sie können AI Assistant in PhpStorm als Zusatzfunktion mit einem Abonnement für den JetBrains AI Service verwenden.

Pest-Updates

PhpStorm now supports the Pest test framework out of the box. We recently agreed with the original author of the Pest plugin to take over its development and bundle it in PhpStorm. You can read the details in our recent blog post.

Pest-Tests

Wie PHPUnit-Tests können auch Pest-Tests jetzt direkt von PhpStorm aus ausgeführt werden. Wenn Sie Ihre Einfügemarke innerhalb eines Tests platzieren und das Run-Fenster auslösen, wird eine Run-Konfiguration für diesen speziellen Test erstellt. Wenn sich die Einfügemarke in einer Datei, aber nicht innerhalb eines bestimmten Tests befindet, werden alle Tests in dieser Datei ausgeführt.

Assertions

Mit der neuen Pest-Unterstützung können Sie Assertions schreiben, indem Sie Funktionen oder Methoden auf $this aufrufen. Auch die Auto-Completion in Testfunktionen wurde verbessert, sodass Sie bereits während der Eingabe sehen können, welche Assertions verfügbar sind.

Benutzerdefinierte Expectations

In Pest können Sie benutzerdefinierte „Expectations“ (Erwartungen) schreiben, um den Umfang von Standardprüfungen in Ihren Tests zu reduzieren. PhpStorm hilft Ihnen, Verwendungen von benutzerdefinierten Expectations zu finden und diese umzubenennen.

Unterstützung von PHP 8.3

PhpStorm 2023.3 bietet vollständige Unterstützung für PHP 8.3. Die meisten IDE-Änderungen integrieren sich so organisch in Ihren PhpStorm-Workflow, dass sie überhaupt nicht auffallen. Wir gehen hier daher nur auf die Neuerungen ein, die Sie kennen müssen, um sie nutzen zu können.

Override-Attribut

#[\Override]-Attribut

PHP 8.3 führt das neue Attribut #[\Override] ein. Sie können es verwenden, um explizit kundzutun, dass Sie eine Methode überschreiben wollen. Die PHP-Engine prüft, ob eine mit #[\Override] markierte Methode tatsächlich die übergeordnete Methode überschreibt, und löst eine Ausnahme aus, wenn dies nicht der Fall ist. PhpStorm 2023.3 warnt Sie frühzeitig in einem solchen Fall.

Empfehlung zur Verwendung des Override-Attributs

An entsprechenden Stellen schlägt PhpStorm außerdem vor, das Attribut #[\Override] hinzuzufügen.

Funktion json_validate() Funktion json_validate()

Neue Funktion json_validate()

Mit PHP 8.3 wurde die neue Funktion json_validate() in die Standardbibliothek aufgenommen. Die einzige Möglichkeit, eine Zeichenfolge auf korrekte JSON-Syntax zu prüfen, bestand zuvor darin, die Zeichenfolge zu dekodieren und zu sehen, ob Fehler auftreten. PhpStorm erkennt solche Codemuster und schlägt vor, sie durch einen json_validate()-Aufruf zu ersetzen. Dies kann von Vorteil sein, wenn Sie nur wissen müssen, ob eine Zeichenfolge gültiges JSON ist, da hierbei weniger Arbeitsspeicher benötigt wird als bei der tatsächlichen Dekodierung.

Typisierte Klassenkonstanten

Typisierte Klassenkonstanten

In PHP 8.3 können Sie Typen für Klassenkonstanten deklarieren. Alle Typdeklarationen können verwendet werden, mit Ausnahme von void, callable und never.

Für typisierte Klassenkonstanten stellt PhpStorm folgende Unterstützung bereit:

  • Vorschläge zum Einfügen der entsprechenden Typen
  • Typhinweis-Completion
  • Kompatibilitätsprüfungen für den Typ des Standardwerts
  • Prüfung auf Typ-Neudeklaration beim Überschreiben einer Konstante in einer Unterklasse
Veraltete Merkmale Veraltete Merkmale

Veraltete Merkmale

PHP 8.3 führt einige Deprecations ein, und PhpStorm bietet Ihnen entsprechende Inspektionen, um diese zu erkennen.

Symfony-Unterstützung

PhpStorm 2023.3 bietet verschiedene Verbesserungen für die Symfony-Entwicklung.

Projektassistent

Projektassistent

Ein neuer integrierter Projektinitialisierer für Symfony ermöglicht es Ihnen, neue Symfony-Projekte mit den gewünschten Typen und Versionen direkt vom Begrüßungsbildschirm aus zu erstellen.

DQL-Unterstützung in QueryBuilder

DQL-Unterstützung in QueryBuilder

Die IDE bietet jetzt in QueryBuilder-Methodenaufrufen eine vollständige Unterstützung für die Doctrine Query Language (DQL). Die Unterstützung umfasst Syntaxhervorhebung, Feld-Completion, Auflösung für die Zielmodellklasse und vieles mehr.

Umwandlung von Annotationen in Attribute für Symfony und Doctrine

Umwandlung von Annotationen in Attribute für Symfony und Doctrine

Following the introduction of attributes in PHP 8.0, Doctrine annotations are being deprecated and will soon be removed. Um Ihnen den Umstieg zu erleichtern, enthält PhpStorm 2023.3 eine Funktion zur Umwandlung von Doctrine-Annotationen in Attribute.

PhpStorm unterstützt auch die Umwandlung von Symfony-Annotationen in die entsprechenden Attribute, z. B. #[Required], #[Route] usw.

Weitere Updates für PHP

Optionaler Ausschluss externer Bibliotheksdateien aus Ihrem Projekt

Optionaler Ausschluss externer Bibliotheksdateien aus Ihrem Projekt

Als experimentelle Funktion haben wir die Möglichkeit hinzugefügt, Verzeichnisse auszuschließen, die aus indizierten Bibliotheken stammen. Durch den Ausschluss solcher Dateien aus Ihrem Projekt können Sie Probleme mit Mehrfachdefinitionen vermeiden und die Indizierungsleistung verbessern.

Spezielle Einfärbung von generischen Typen

Spezielle Einfärbung von generischen Typen

Wir arbeiten weiter an der Optimierung der Nutzungserfahrung für Generics. In PhpStorm 2023.3 können Sie eine Farbcodierung für Generics einrichten, um die Unterscheidung zwischen generischen Typen zu erleichtern.

Falten mehrzeiliger PHP-Attribute

Falten mehrzeiliger PHP-Attribute

Durch die zunehmende Verbreitung von Attributen entsteht ein Lesbarkeitsproblem bei Code, der mit langen mehrzeiligen Attributen eines Frameworks annotiert ist. In PhpStorm 2023.3 sollte dies kein Problem mehr darstellen, da Sie jetzt mehrzeilige Attribute durch eine Faltfunktion ausblenden können.

PHPUnit-Metadaten-Umwandlung von PHPDoc in Attribute

PHPUnit-Metadaten-Umwandlung von PHPDoc in Attribute

PHPUnit 10 introduced support for attributes for adding metadata to test classes and test methods, as well as tested code units. Wir haben eine Inspektion und einen Quick-Fix implementiert, die Ihnen helfen, von den alten PHPDoc-Annotationen auf diesen neuen Stil umzusteigen.

Versionsverwaltung

Universeller Diff-Betrachter

PhpStorm 2023.3 führt eine überarbeitete Methode zur Überprüfung von Änderungen ein. Anstatt jede Datei einzeln durchzugehen, können Sie jetzt alle geänderten Dateien eines Changesets in einem einzigen, scrollbaren Rahmen betrachten. Dieser neue Diff-Betrachter ist über das Git Log-Toolfenster zugänglich und funktioniert derzeit mit JetBrains-Space-Reviews. Wir arbeiten daran, die Kompatibilität auf GitLab und GitHub zu erweitern.

Debugger

Debugger

Mit der neuen Inlay-Option Run to Cursor können Sie beim Debuggen in PhpStorm 2023.3 den Code unkompliziert bis zu einer bestimmten Codezeile ausführen. Wenn Ihr Programm angehalten ist, können Sie den Mauszeiger auf die Zeile bewegen, bis zu der Sie den Code ausführen möchten, und das Popup Run to Cursor verwenden. Dasselbe können Sie auch mit dem Tastenkürzel Alt + F9 erreichen, während sich die Einfügemarke in der gewünschten Zeile befindet.

Bedienoberfläche

Optionales Ausblenden der Hauptsymbolleiste im Standard-Anzeigemodus

Optionales Ausblenden der Hauptsymbolleiste im Standard-Anzeigemodus

Als Reaktion auf Ihr Feedback haben wir in der neuen Bedienoberfläche die Möglichkeit nachgerüstet, die Hauptsymbolleiste im Standard-Anzeigemodus der IDE auszublenden – genau wie in der alten Oberfläche. Um die Symbolleiste zu entfernen, wählen Sie View | Appearance und deaktivieren Sie die Option Toolbar.

Rückkehr zum Toolfenster-Standardlayout

Rückkehr zum Toolfenster-Standardlayout

Mit PhpStorm 2023.1 haben wir die Möglichkeit eingeführt, mehrere Toolfenster-Layouts zu speichern und zwischen ihnen zu wechseln, um Ihren Arbeitsbereich individueller einrichten zu können. In PhpStorm 2023.3 erweitern wir diese Funktionalität, indem wir die Option Default layout einführen, die eine einfache Möglichkeit schafft, das Erscheinungsbild Ihres Arbeitsbereichs auf die Standardeinstellung zurückzusetzen. Dieses Layout ist nicht individualisierbar und kann über Window | Layouts aufgerufen werden.

Farbcodierte Editor-Tabs als Standard

Farbcodierte Editor-Tabs als Standard

Um die gleichzeitige Arbeit mit verschiedenen Dateitypen im Editor zu erleichtern, haben wir eine standardmäßige Farbkodierung für Editor-Tabs eingeführt, die an die Darstellung im Project-Toolfenster angelehnt ist.

Verbesserungen für TypeScript

Verbesserungen für TypeScript

PhpStorm enthält eine Vielzahl von WebStorm-Funktionen, und wir haben jetzt einige der frustrierenden Unstimmigkeiten beim Hinzufügen von import type-Anweisungen behoben und die Arbeit mit verbatimModuleSyntax erleichtert. Wir haben die Option hinzugefügt, in TypeScript die Art der import type-Anweisung zu konfigurieren. Außerdem haben wir bei TypeScript-Dateien das Verhalten für das Feld exports in der Datei package.json verbessert.

Schließen von Einzeltags bei HTML zu JSX

HTML-Updates

Wenn Sie HTML-Code in eine JSX-Datei einfügen, konvertiert PhpStorm jetzt nicht nur Attribute, sondern schließt darüber hinaus auch Einzeltags für Sie. Sie können diese Option unter Settings | Editor | General | Smart Keys | JavaScript konfigurieren.

Unterstützung für benutzerdefinierte CSS-Eigenschaften mit @property

CSS-Verbesserungen

To support the new @property API for creating custom CSS properties, PhpStorm 2023.3 now offers inspections and completion features for explicitly defining CSS custom properties, allowing you to check and restrict property types, establish default values, and determine inheritance possibilities for custom properties.

Verbesserungen für Vue 3

Verbesserungen für Vue 3

Wir haben Unterstützung für defineSlots eingeführt, inklusive Completion und Navigation für den slot-Namen sowie ein Rename-Refactoring für das Umbenennen. Außerdem haben wir Completion-Unterstützung für Eigenschaften mit defineExpose eingeführt. In PhpStorm 2023.3 werden erforderliche Importe für Komponenten basierend auf dem von der Funktion defineOptions spezifizierten Namen hinzugefügt.