PhpStorm 2020.3 ist ein großes Update, das die Unterstützung von PHP 8, PHPStan, Psalm, Tailwind CSS, Xdebug 3 und die kollaborative Entwicklung über Code With Me einführt.
PHP 8.0 ist ein wichtiges Sprach-Update mit vielen unglaublichen neuen Funktionen. Mit PhpStorm können Sie: die Kompatibilität Ihres bestehenden Codes überprüfen, Ihre Codebasis schneller aktualisieren und von den neuesten Sprachverbesserungen profitieren.
Jetzt können Sie immer sehen, welche Sprachversion in einem Projekt verwendet wird. Wir haben die entsprechende Anzeige in die Statusleiste gesetzt. Von dort aus können Sie auch die Sprachversion ändern, wenn composer.json
keine Einschränkungen für die PHP-Version auflistet.
Funktions- und Methodenargumente können in PHP 8 durch Angabe eines Parameternamens übergeben werden. Dadurch entfällt die Notwendigkeit, optionale Parameter zu setzen, und Aufrufe sind jetzt selbstdokumentiert.
PhpStorm kann dabei helfen:
Mit dieser Funktion können Sie die Menge an Codebausteine reduzieren, wenn Sie Variablen über einen Konstruktor initialisieren.
In PhpStorm können Sie im Konstruktor initialisierte Eigenschaften in höher gestuften Eigenschaften umwandeln oder sie mit der Quick-Fix Alt+Enter in Convert to promoted property.
Anstatt umständliche Bedingungen mit Null-Prüfungen verwenden zu müssen, können Sie mit dem neuen Operator?->
Ketten von Aufrufen mit impliziten Prüfungen auf Null für jedes Element aufbauen.
PhpStorm stellt sicher, dass der Operator korrekt verwendet wird.
Der neue Match
-Ausdruck ist eine typsichere und kompakte Alternative zur Switch
-Anweisung. Ein Match
-Ausdruck kann als Wert verwendet und einer Variablen zugewiesen oder zurückgegeben werden.
PhpStorm bestimmt, ob ein Switch
-Block in einen Match
-Ausdruck umgewandelt werden kann, und tut dies automatisch mit einer Alt+Enter-Quick-Fix.
Mit dem neuen Ausdruck kann es schwierig sein, Missbräuche zu erkennen. PhpStorm wird sie für Sie hervorheben.
In PHP 8 können Sie die Funktion str_contains()
verwenden, um festzustellen, ob ein String Teil eines anderen Strings ist. PhpStorm 2020.3 lenkt Ihre Aufmerksamkeit auf alle Verwendungen von strpos()
, die durch str_contains()
ersetzt werden können.
PhpStorm weist auch auf die Stellen hin, an denen alte substr()
-Aufrufe durch die neuen, selbsterklärenderen str_starts_with()
und str_ends_with()
-Funktionen ersetzt werden können.
Use
-Abschnitt von Closures. ??
und dem Ternär-/elvis-Operator ?:
erlaubt). $object::class
anstelle von get_class($object)
verwenden. Verwenden Sie dazu ein Alt+Enter Quick-Fix. PHP 8 ermöglicht die Verwendung von Attributen zur strukturierten Angabe von Metadaten, anstatt sich auf PHPDoc-Annotations verlassen zu müssen.
PhpStorm bietet Hervorhebungen, Code-Completion, Finden von Verwendungen, Refactorings und andere Programmierunterstützung für die Arbeit mit Attributen. Es verfügt auch über Inspektionen, um sicherzustellen, dass die Attribute deklariert und gültig verwendet werden.
PhpStorm 2020.3 kommt mit mehreren PHP 8 Attributen, die sofort in der IDE verfügbar sind. We also provide them in a composer package jetbrains/phpstorm-attributes, so feel free to add it as a dependency in composer.json
.
Wie das @deprecated
PHPDoc-Tag können Sie dieses Attribut verwenden, um Methoden, Funktionen, Klassen oder Klassenkonstanten zu markieren, die in zukünftigen Versionen der Software entfernt werden.
Geben Sie reason
und replacement
an, damit Ihre Benutzer verstehen, warum sie ein Upgrade benötigen, und ermöglichen Sie es ihnen, dies automatisch mit einer Quick-Fix mit Alt+Enter zu tun.
Verwenden Sie dieses Attribut, um die Schlüssel und Werttypen von objektartigen Arrays zu definieren. Dies wird die Programmierunterstützung und Analyse, die Sie von PhpStorm erhalten, verbessern.
Hinweis: Wenn in einer Zeile geschrieben wird, funktioniert dies auch in PHP 7.4 und früher.
Markieren Sie Objekte oder Eigenschaften mit dem Attribut #[Immutable]
, wenn Sie alle Versuche verhindern möchten, das Objekt nach seiner Initialisierung zu ändern.
Dadurch wird der Programmzustand vorhersehbarer und die Debugging einfacher.
Passen Sie die Einschränkung des Schreibbereichs von Eigenschaften mit einer der folgenden Konstanten an, die an den Attributkonstruktor übergeben werden: CONSTRUCTOR_WRITE_SCOPE
, PRIVATE_WRITE_SCOPE
, PROTECTED_WRITE_SCOPE
.
Hinweis: Wenn in einer Zeile geschrieben wird, funktioniert dies auch in PHP 7.4 und früher.
Markieren Sie Funktionen, die keine Nebenwirkungen erzeugen, als #[Pure]
, um die Codeflussanalyse in PhpStorm zu verbessern. Die IDE wird redundante Aufrufe von reinen Funktionen hervorheben.
Wenn Sie eine Funktion als #[Pure]
markieren, aber in ihrem Körper ein Versuch stattfindet, etwas aus dem äußeren Bereich zu ändern, dann wird PhpStorm den unsicheren Code hervorheben.
Alle solchen PHP-internen Funktionen, z.B. array_merge()
, sind bereits in PhpStorm markiert.
Mit diesem Attribut legen Sie fest, welche Werte eine Funktion als Parameter akzeptiert und welche sie zurückgeben kann. Dies verbessert die Code-Completion und hilft bei der Erkennung möglicher Fehler.
#[ExpectedValues]
ist eine erweiterte Version von expectedArguments()
aus .phpstorm.meta.php.
.
Markieren Sie die Funktionen, die eine Skriptausführung beenden können, mit einem #[NoReturn]
-Attribut, um eine genauere Kontrollflussanalyse zu erhalten.
PhpStorm bietet an, das Attribut mit einem Quick-Fix in der Hierarchie nach unten zu propagieren, um eine noch genauere Analyse zu erhalten.
Fügen Sie dieses Attribut zu String-Parametern hinzu, die Text in einer anderen Sprache enthalten, z.B. RegExp, SQL usw. Dies wird zusätzliche PhpStorm-Funktionen enthüllen.
Diese beiden statischen Analysatoren können in PhpStorm 2020.3 als erstklassige Tools verwendet werden, um Probleme im Editor hervorzuheben. Fügen Sie sie als dev-dependencies in composer.json
hinzu und schalten Sie die entsprechende Inspektion ein, indem Sie auf ein Schraubenschlüssel-Symbol in der Nähe des Tools klicken.
PhpStorm bietet auch Code-Completion für @psalm-*
-Tags und behandelt sie als speziell, so dass es keine Probleme mit Hervorhebungen, undefinierten Klassen usw. gibt. In den meisten Fällen ist es jetzt sicher, das @psalm-
-Präfix aus den Tags zu entfernen, d.h. @psalm-return
kann einfach @return
sein und @psalm-param
kann @param
sein.
Es werden viele Psalmtypen unterstützt, darunter skalare, numerische und Typen mit Konstanten. Dementsprechend ist alles, was von der Typ-Inferenz abhängt, treffsicherer geworden: Inspektionen, Codegenerierung und -Completion.
Xdebug 3 ist eine frische Überarbeitung des PHP-Debuggers. Er arbeitet viel schneller und ist einfacher einzurichten.
Um Xdebug 3 zu konfigurieren, müssen Sie lediglich XDEBUG_MODE=debug
angeben.
Der Standard-Debugging-Port für Xdebug wurde von 9000 auf 9003 geändert. Um die Migration zu erleichtern, überwacht PhpStorm standardmäßig beide Ports. Der Port und andere Einstellungen für Xdebug können unter Preferences/Settings | Languages & Frameworks | PHP | Debugangepasst werden.
Learn more about Xdebug 3 in the Upgrade Guide.
PhpStorm 2020.3 unterstützt Code With Me – einen neuen Dienst von JetBrains für kollaborative Entwicklung und Paarprogrammierung. Mit Code With Me können Sie das Projekt, das gerade in Ihrer IDE geöffnet ist, für andere freigeben, um gemeinsam in Echtzeit daran zu arbeiten.
Mehr zu Code With Me erfahren Sie in diesen Beiträgen.
Mit PhpStorm können Sie jetzt Tailwind CSS produktiver nutzen.
Die IDE wird Ihre Tailwind-Klassen automatisch vervollständigen, Ihnen beim Mouseover eine Vorschau des resultierenden CSS anzeigen und die Anpassungen unterstützen, die Sie mit Hilfe der Dateien tailwind.config.js
vornehmen.
Guzzle is one of the most popular HTTP clients for PHP. In PhpStorm 2020.3 können Sie Guzzle-Anfragen testen, ohne den tatsächlichen Code auszuführen.
Wenn die Anfrage unterstützt wird, wird ein Randleistensymbol daneben angezeigt. Klicken Sie darauf, um eine neue HTTP
-Scratch-Datei zu erstellen, bei der die Parameter vorausgefüllt sind.
Spielen Sie mit der Anforderung herum und speichern Sie sie dann als .http
-Datei in Ihrem Projekt.
Um einen cURL-String von einer HTTP-Anfrage zu erhalten, drücken Sie Alt+Enter im Editor für HTTP-Anfragen und wählen Sie Convert to cURL and copy to clipboard.
Sie können den cURL-String im Terminal oder mit einem HTTP-Client Ihrer Wahl verwenden.
Mermaid.js Diagramme und Grafiken können jetzt innerhalb der IDE gerendert werden. Aktivieren Sie diese Unterstützung unter Preferences/Settings | Languages & Frameworks | Markdown.
In der oberen rechten Ecke des Vorschaufensters gibt es eine Schaltfläche Auto-Scroll Preview, die das synchrone Scrollen mit dem Editor ein- und ausschaltet.
Wir haben eine Reihe von beliebten Markdown-Codestil-Voreinstellungen hinzugefügt, die funktionieren, wenn Sie den Code mit Strg+Alt+L neu formatieren. Die Einstellungen befinden sich unter Preferences/Settings | Editor | Code Style | Markdown.
Die Engine für die Grammatikprüfung unterstützt mehr Sprachen und bietet qualitativ hochwertigere Grammatikprüfungen.
Wenn ein Fehler hervorgehoben wird, erscheint ein Popup-Fenster mit einer Erklärung und einem Korrekturvorschlag.
Wenn Sie Alt+Enter mit einem Textcursor über dem hervorgehobenen Text drücken, sehen Sie alle vorgeschlagenen Ersetzungen in der obersten Ebene, statt einer verschachtelten Liste wie zuvor.
Öffnen Sie mehrere Registerkarten nebeneinander, indem Sie eine Registerkarte auf die gewünschte Seite des Bildschirms ziehen.
Eine andere Möglichkeit zum Öffnen von Registerkarten im geteilten Modus besteht darin, bei einer ausgewählten Datei in der Projektansicht oder in einem beliebigen Suchfenster Shift+Enter zu drücken.
Sie können Dateien in einer speziellen Registerkarte in der Vorschau anzeigen, ohne sie tatsächlich zu öffnen. Um diese Funktion zu aktivieren, klicken Sie auf das Zahnradsymbol in der Projektansicht und aktivieren Sie die beiden Optionen Enable Preview Tab und Open Files with Single Click. Wenn Sie mit der Bearbeitung einer Datei beginnen, die Sie in der Vorschau anzeigen, wird das Register zu einer normalen Datei.
Im Popup-Fenster Search Everywhere (Shift+Shift) werden die Ergebnisse etwas anders angezeigt. Statt nach Typ werden sie jetzt nach ihrer Relevanz für die Suchanfrage gruppiert.
Es ist jetzt auch möglich, einfache mathematische Berechnungen in Search Everywhere durchzuführen. Geben Sie einige Zahlen und mathematische Operatoren ein und sehen Sie sofort die Ergebnisse der Berechnung. Dadurch entfällt die Notwendigkeit, zu einer Rechneranwendung zu wechseln und Ihren Flow zu unterbrechen.
Search Everywhere kann auch den Git-Verlauf durchsuchen, einschließlich Informationen über Branches und Commits.
Alle neuen Funktionen und Verbesserungen von WebStorm 2020.3 sind auch in PhpStorm 2020.3 verfügbar – entweder als integrierte Funktionen oder als kostenlose Plugins im Plugin-Marketplace.
Wir haben den TypeScript-Sprachdienst in das Problems-Toolfenster integriert und das separate TypeScript-Toolfenster entfernt, so dass es einfacher ist, die Probleme in Ihrem Code von einer Stelle aus zu überprüfen. Den Aktionen, die bisher im TypeScript-Toolfenster verfügbar waren, haben wir ein separates Widget in der Statusleiste spendiert.
Wenn Sie eine ungelöste React-Komponente in Ihrem Code haben, platzieren Sie die Einfügemarke an seiner Stelle, drücken Sie Alt+Enter und wählen Sie Create class / function component von der Liste – die IDE erstellt dann das entsprechende Codekonstrukt für Sie.
PhpStorm 2020.3 kommt mit Unterstützung für den Git-Staging-Bereich. Um sie zu nutzen, aktivieren Sie das Kontrollkästchen Enable staging area unter Preferences/Settings | Version Control | Git.
Gehen Sie mit Alt+0 zurück zum Fenster des Commit-Tools, um Staged- und Unstaged-Dateien anzuzeigen.
Führen Sie das Staging Ihrer Dateien durch, indem Sie auf das Plus-Symbol neben ihnen klicken.
Sie können das Staging bestimmter Zeilen durchführen, indem Sie das Randleistensymbol neben den Änderungen im Editor verwenden.
Schauen Sie sich auch die Neuerungen in DataGrip 2020.3 an – alle neuen Funktionen sind auch in PhpStorm verfügbar.
Sie können jetzt SQL verwenden, um MongoDB-Datenbanken abzufragen. PhpStorm 2020.3 supports SELECT
queries with clauses such as JOIN
, WHERE
, GROUP BY
, HAVING
, ORDER BY
, LIMIT
, OFFSET
, and all available MongoDB functions except map, reduce, filter, and let. Weitere Informationen zur SQL-Unterstützung in MongoDB finden Sie in diesem Blogeintrag.
Die IDE unterstützt jetzt den Couchbase-Query-Dienst. Wir haben außerdem zwei neue Extraktoren eingeführt: Mit One-Row können Sie eine Spalte in eine kommagetrennte Zeichenfolge kopieren, und SQL-Insert-Multirow erzeugt eine INSERT
-Anweisung zum Einfügen mehrerer neuer Zeilen.