PhpStorm 2020.1: Unterstützung von composer.json, Tools für PHPUnit, Codeabdeckung mit PCOV und PHPDBG, Grazie und mehr



Hallo Habr! Wir freuen uns, die erste Hauptversion von PhpStorm in diesem Jahr präsentieren zu können!

Unter dem Schnitt eine detaillierte Analyse aller auffälligen Änderungen und neuen Funktionen. Achtung - viele Bilder.

PhpStorm 2020.1 Toolbox App. 30- . JetBrains .

composer.json


Alle Aktionen zum Arbeiten mit Abhängigkeiten sind jetzt direkt in der Datei verfügbar composer.jsonund funktionieren direkt im Editor.

Sie können eine neue Datei composer.json über das Kontextmenü oder mithilfe des Hotkeys erstellenCtrl(⌘)+N . Die Vorlage für diese Datei befindet sich in den Einstellungen / Einstellungen | Editor | Datei- und Codevorlagen .



Verwalten von Abhängigkeiten

Um eine Abhängigkeit hinzuzufügen, schreiben Sie einfach den Namen des Anbieters und des Pakets. Eine Liste der automatischen Vervollständigung mit den entsprechenden Optionen wird angezeigt. Verfügbare Versionen dieses Pakets werden



im Versionsfeld angeboten. Im Moment muss ein Wagen (^) oder ein anderes Symbol zur Angabe eines Versionsbereichs manuell hinzugefügt werden. In zukünftigen Versionen werden wir dies jedoch beheben.
Bei Anforderungen an die PHP-Version oder beim Vorhandensein von Erweiterungen funktioniert auch die automatische Vervollständigung.

Aktualisieren und Installieren von Paketen

Wenn composer.locknoch keine Datei vorhanden ist und keine Pakete installiert sind, hebt PhpStorm den Abschnittsnamen requireund hervor require-dev. Um sie zu installieren, können Sie in der Symbolleiste über dem Editor auf die Schaltfläche Installieren klicken . Oder verwenden Sie die Schnellklick-Aktion Alt(⌥)+Enterund wählen Sie Pakete.



installieren. Wenn jedoch nicht alle Pakete installiert sind, hebt PhpStorm die fehlenden hervor. Dann können Alt(⌥)+EnterSie einen von ihnen aufrufen und Paket aktualisieren oder Alle Pakete aktualisieren auswählen .

Neben der angegebenen Versionsanforderung ist die graue Version die Version des tatsächlich installierten Pakets. Im Popup-Dialogfeld für Pakete finden Sie Informationen von packagist.org über die Anzahl der Downloads und Sterne.



PhpStorm übernimmt alle Informationen zu Paketen und deren Versionen von packagist.org und speichert sie zwischen.

Navigation auf Dateien und Ordner

Sicher wissen Sie , dass durch Klicken Ctrl(⌘)+Clickund Ctrl(⌘)+BSie auf die Definition von Entitäten gehen können oder für ihre Verwendung suchen.

Auch composer.jsonhier wird es funktionieren. Wenn Sie Ctrl(⌘)+Clickauf ein Paket klicken , wird das entsprechende Verzeichnis im Projektbaum hervorgehoben. Und wenn eine Datei vorhanden ist, wird sie im Editor geöffnet.



Wenn Sie auf Ctrl(⌘)+Clickoder Ctrl(⌘)+Bauf einen Link in klicken, wird dieser composer.jsonvoraussichtlich im Browser geöffnet.

Automatische Vervollständigungin Abschnitten zum automatischen Laden (-dev) Die
automatische Vervollständigung basierend auf Informationen aus Klassen und der Verzeichnisstruktur des Projekts funktioniert für Namespaces und Pfade.



Ctrl(⌘)+Clickund Ctrl(⌘)+Bzu Dateien und Ordnern zu gehen, funktioniert auch hier.

Verbesserungen für Skripte

Erstens funktionieren Übergänge zu Dateien / Ordnern / Methoden auf die gleiche Weise. Zweitens werden Aliase für Teams unterstützt. Und drittens können Skripte über den Editor gestartet werden, indem Sie die [Play] -Taste neben dem Skriptnamen drücken.

Dadurch wird automatisch eine Run-Konfiguration erstellt. Dies bedeutet, dass Sie das Skript mit einem Hotkey erneut ausführen können Ctrl(⌃)+R, was beim Debuggen sehr praktisch ist:



Installieren von Tools für die Codequalität
Wenn Entwicklungsabhängigkeiten bestehenFriendsOfPHP/PHP-CS-FixerDann prüft PhpStorm, ob die entsprechende Überprüfung aktiviert ist und ob der Regelsatz installiert ist. Wenn nicht, können Sie anrufen Alt(⌥)+Enter, um das Problem zu beheben:



Verbesserungen der Inferenz von PHP-Typen


Die Typ-Inferenz-Engine ist die Grundlage von PhpStorm, und in dieser Version wurden einige bemerkenswerte Änderungen vorgenommen.

Zusätzliche Tag-Hervorhebungvar
Das Hinzufügen von Tags @varist eine gute Möglichkeit, PhpStorm den Typ einer Variablen mitzuteilen. Wir verbessern jedoch ständig die Typinferenz, und einige dieser Deklarationen sind möglicherweise redundant, da PhpStorm den Typ der Variablen bereits kennt.

Solche Fälle werden hervorgehoben und können mit der Schnellkorrektur entfernt werden Alt(⌥)+Enter-> „Entfernenvar : Das



Verfolgen von Nulltypen ist eine schwierige Aufgabe, und es gab Stellen, an denen PhpStorm nicht damit umgehen konnte. Jetzt in 2020.1 weiß PhpStorm, wann eine Variable null sein kann und wann nicht.

Hier einige Beispiele:



Automatische Vervollständigung für ein initialisiertes Array

Angenommen, Sie haben ein Array mit bekannten Elementen und versuchen später, darüber zu iterieren. Bisher funktionierte die automatische Vervollständigung hier nicht, da Typinformationen verloren gingen. In 2020.1 funktioniert alles:



Autovervollständigung in array_map / array_filter.

Der Hauptteil des Abschlusses, der an die Funktionen array_map () und array_filter () übergeben wird, funktioniert jetzt für die Argumente.



Codeabdeckung mit PCOV und PHPDBG


Sie können die Codeabdeckung mit Xdebug erstellen . Da es sich jedoch in erster Linie um einen Debugger handelt, ist der Overhead angemessen. Um das Abrufen eines Abdeckungsberichts zu beschleunigen, können Sie leichtere Tools verwenden: die krakjoe / pcov-Erweiterung oder das in PHP 5.6+ integrierte PHPDBG .

Beide werden jetzt in PhpStorm unterstützt. Sie müssen eine Ausführungskonfiguration für die Tests erstellen und den gewünschten Abdeckungstreiber in den Einstellungen auswählen. Führen Sie dann die Tests mit Abdeckungsberechnung durch, indem Sie auf die Schaltfläche klicken :



Weitere Informationen zu den Unterschieden bei der Berechnung der Abdeckung zwischen Xdebug, PCOV und phpdbg finden Sie in README .

PHPUnit Toolkit


In der kürzlich veröffentlichten PHPUnit 9 (und bereits 9.1) wurden viele Funktionen entfernt oder veraltet. Um die Migration zu beschleunigen und Fehler zu vermeiden, haben wir eine Reihe von Inspektionen und Schnellkorrekturen hinzugefügt.



Erstellen eines neuen Tests für die Klasse

Wenn Sie die Klassendeklaration aufrufen Alt(⌥)+Enterund " Neuen PHP-Test erstellen" auswählen, erhalten Sie schnell das Grundgerüst für den Test.



Metadaten


Die Metadaten in der Datei .phpstorm.meta.phpermöglichen es PhpStorm, zusätzliche Informationen zu Ihrem Projekt bereitzustellen und dadurch die Code-Vervollständigung zu verbessern. Diese Funktion wird beispielsweise im Symfony-Plugin und im Laravel IDE Helper verwendet .

Weitere Informationen zu den Funktionen von Metadaten finden Sie in einem PHP- Bericht als Entwicklungstool für PhpStorm auf PHP Russia 2019.

PhpStorm 2020.1 hat eine Reihe von Verbesserungen für Metadaten hinzugefügt.

Parameter Index Richtlinien überschreiben, Karte und geben

Sie vor der Verwendung override(), map()und type()Sie können das Verhalten der ersten Arguments Funktionen ändern. In PhpStorm 2020.1 können Sie einen beliebigen Parameterindex angeben:



Zugriff auf Eigenschaften über __get

Wenn Sie Eigenschaftswerte durch Magie erhalten haben __get(), gingen Informationen über den Typ verloren. Es war möglich, zusätzliche Tags @varoder zu verwenden @property, dies wurde jedoch nicht immer gespeichert. Jetzt können Sie alles über Metadaten angeben.



Die automatische Vervollständigung von Schlüsseln in Objekten, die ArrayAccess-

Metadaten implementieren, unterstützt ArrayAccess-Objekte, schlägt jedoch nur den Wertetyp vor. Mögliche Schlüssel werden jetzt auch automatisch vervollständigt.



Benutzerdefinierte Exit-Punkte

PhpStorm berücksichtigt Typfunktionen die()und / exit()oder Ausnahmen, um die Ausführung abzuschließen. Anwendungen können jedoch komplexere Austrittspunkte haben. Zum Beispiel einfache dd()oder trigger_error- Funktion mit dem Argument E_USER_ERROR .

In PhpStorm 2020.1 können Sie Funktionen als Austrittspunkte markieren, wodurch die Durchflussanalyse entsprechend angepasst wird.



Symbole für Funktionen, die über Metadaten neu definiert wurden Im

Gegensatz zu Deklarationen von Funktionen, deren Verhalten mit oder geändert override()wurde , wird ein Symbol angezeigt. Durch Klicken auf das Symbol wird eine Datei geöffnet, in der sich das Verhalten ändert, da mehrere Dateien vorhanden sein können.exitPoint()expectArguments().phpstorm.meta.php



Symbole können in den Einstellungen / Einstellungen | ausgeblendet werden Editor | Allgemeines | Dachrinnen-Symbole .

Maschinelles Lernen zum Sortieren der Liste der Add-Ons


Rangfolge der Optionen für die automatische Vervollständigung basierend auf maschinellem Lernen hinzugefügt.

Wie kann man ML in Aktion sehen?

Die automatische Vervollständigung mit ML ist standardmäßig deaktiviert. Wir wollen nicht, dass Roboter uns unsere Arbeit rauben! Um es zu aktivieren, gehen Sie zu Einstellungen / Einstellungen | Editor | Allgemeines | Code-Vervollständigung und aktivieren Sie die Optionen Vorschläge zur Rangvervollständigung basierend auf maschinellem Lernen und PHP .

Wenn Sie auch die Option Positionsänderungen im Popup "Fertigstellung anzeigen" aktivieren, zeigt die Liste der automatischen Vervollständigung an, wie sich die Reihenfolge der Elemente geändert hat.



Wir planen, den Aufstand von Autos zu verhindern , um in zukünftigen Versionen weiterhin in diese Richtung zu arbeiten.

Neue Inspektionen


Eine private Eigenschaft kann eine lokale Variable sein.

Eine Eigenschaftsdefinition wird hervorgehoben, wenn sie nur in einer Methode verwendet und sofort überschrieben wird. Um dies zu beheben, können Sie die Schnellkorrektur Alt(⌥)+Enter "Eigenschaft durch lokale Variable ersetzen" aufrufen .



Zusätzliche Eigenschaftsinitialisierung

Angenommen, eine private Eigenschaft hat einen Standardwert in einer Klasse, wird jedoch im Konstruktor sofort mit einem anderen Wert überschrieben. In diesem Fall ist der Standardwert redundant und fügt nur Rauschen hinzu.

Ein nicht verwendeter Initialisierer wird hervorgehoben und kann mit einer Schnellkorrektur Alt(⌥)+Enter „Redundanten Initialisierer entfernen“ entfernt werden .



Ändern Sie den Eigenschaftstyp in PHP 7.4 auf den Standardwert



Redundanter ternärer Operator

PhpStorm hebt triviale ternäre Ausdrücke hervor und kann sie mit einer schnellen Lösung Alt(⌥)+Enterdurch einfachere ersetzen:



Redundante Übertragung per Referenz Die

Verwendung der Übertragung per Referenz kann zu unerwarteten Konsequenzen führen. Dies ist einer der Gründe, warum Nikita Popov vorgeschlagen hat, die explizite Übertragung per Referenz beim Aufruf zuzulassen Funktionen in PHP.

In der Zwischenzeit hebt PhpStorm 2020.1 die Parameter hervor, die als Referenz übergeben, aber nicht als solche verwendet wurden. Sie können mit einer schnellen Lösung sicher entfernt werden Alt(⌥)+Enter.



Gleiches gilt für Arrays mit einem Link in der foreach-Schleife:



Entfernen Sie das zusätzliche PHPDoc, in dem dank der entsprechenden Schnellkorrektur jetzt auch nur noch die Typdeklaration ganz einfach ist.



Richtig, standardmäßig befindet sich die Inspektion auf der Info- Ebene , dh sie wird nicht hervorgehoben. Wenn redundante PHPDoc-Blöcke hervorgehoben werden sollen, überprüfen Sie den Kommentar Redundantes PHPDoc in den Einstellungen | Editor | Inspektionen, stellen Sie die Schwachwarnstufe oder höher ein.

Das Refactoring "Verschiebungsmethode" wurde aktualisiert.


Manchmal kann es erforderlich sein, eine Methode in eine andere Klasse zu übertragen. Wenn diese Methode im Projektcode häufig verwendet wird, kann PhpStorm hier helfen.

Zuvor mussten Sie zuerst die Methode statisch machen und dann eine andere Aktion aufrufen, um sie zu übertragen. In PhpStorm 2020.1 wurde das Refactoring der „Verschiebungsmethode“ zu einer einzigen atomaren Aktion überarbeitet. Zusätzliche Schritte und Popups wurden entfernt, und alles wird auf einmal erledigt.

Bewegen Sie den Mauszeiger über eine Methode und drücken Sie F6(oder Ctrl+T, 3). Wählen Sie dann die Zielklasse aus und Sie sind fertig.



Um alle verfügbaren Refactorings anzuzeigen , können Sie auf eine Ctrl+Tbeliebige Stelle im Code klicken .

PHP-Debug im HTTP-Client


Um das Debuggen selektiv zu aktivieren, müssen Sie sich nicht mehr um die Anforderungsparameter kümmern oder die Erweiterung im Browser installieren. Es reicht aus, eine HTTP-Anfrage in einer Datei zu erstellen .httpund diese mit dem Befehl PHP Debug zu senden , der im Menü Alt(⌥)+Enteroder durch Klicken auf das Symbol verfügbar ist . Infolgedessen wird der Anforderung automatisch ein Cookie hinzugefügt XDEBUG_SESSION.



Und noch ein paar Kleinigkeiten für PHP


@ veraltete Elemente werden in der Strukturbaumansicht als durchgestrichen angezeigt. Hervorheben übereinstimmender Tags <? php /?> Zur öffnenden / schließenden Klammer springen Lexer-Anpassung für Twig Manchmal müssen Sie möglicherweise die Tag-Zeichen für Twig-Vorlagen ändern, wenn Sie beispielsweise auch Angular verwenden, das über solche verfügt gleiche Syntax. Sie können dies in den Einstellungen / Einstellungen | tun Sprachen & Frameworks | PHP | Zweig .
Ctrl(⌘)+F12









Shift+Ctrl+M (⌃+M)








IDE


Grazie Fortgeschrittene Rechtschreibung und Grammatik


Das Grazie-Plugin ist sofort in PhpStorm enthalten und überprüft den Text nicht nur auf Rechtschreibfehler, sondern auch auf Grammatik und Stil. Darüber hinaus werden 16 Sprachen unterstützt, und alle Überprüfungen werden lokal durchgeführt, ohne dass Ihre Daten irgendwohin gesendet werden müssen.



Standardmäßig sind Überprüfungen für Markdown-Dateien aktiviert.
Sie können sie auch für alle Zeichenfolgenliterale, Kommentare, PHPDoc-Blöcke und Festschreibungsnachrichten einschließen.

Für PHP können Sie unter Einstellungen / Einstellungen | aktivieren Editor | Korrekturlesen | Grammatik .

LightEdit-Modus


Manchmal müssen Sie die Datei schnell suchen / reparieren und eine ganze IDE dafür öffnen, es scheint zu viel, aber Sie möchten die übliche Hintergrundbeleuchtung und Funktionen haben. In solchen Fällen arbeiten wir am leichten LightEdit-Modus.

Das funktioniert folgendermaßen: Wenn Sie die Datei über die Befehlszeile oder das Kontextmenü des Betriebssystems öffnen, während PhpStorm nicht ausgeführt wird, wird die Datei in LightEdit geöffnet. Wenn ein vollwertiger PhpStorm bereits funktioniert, wird die Datei einfach darin geöffnet.



JetBrains Mono - Standardschriftart




Zen-Modus


Der neue Modus kombiniert Distraction Free und Fullscreen, um tief in den Code einzutauchen.
Anzeigen | Aussehen | Aktivieren Sie den Zen-Modus



Schnittstelle


Terminalfenster geteilt


Anstatt neue Registerkarten zu öffnen und zwischen ihnen zu wechseln, können Sie jetzt den Bildschirm teilen und mehrere Sitzungen auf einer Registerkarte öffnen. Wählen Sie dazu im Kontextmenü des Terminals die Option Horizontal / Vertikal teilen .



IntelliJ Light-

Thema Das Lichtthema wurde leicht aktualisiert und vereinheitlicht, um auf allen Betriebssystemen gleich auszusehen. Der Name wurde in IntelliJ Light geändert .

Anpassung der Statusleiste

Im Kontextmenü können Sie auswählen, welche Informationen darauf angezeigt werden sollen.



Aufbau


Unified SSH-Konfiguration


Bisher musste eine SSH-Verbindung, die in einer Bereitstellung, einem Remote-Interpreter oder einem SSH-Terminal wiederverwendet wurde, jedes Mal neu konfiguriert werden.

Jetzt können alle SSH-Verbindungen in den Einstellungen / Einstellungen | hinzugefügt / bearbeitet werden Werkzeuge | SSH-Konfiguration , und verwenden Sie sie dann wiederholt, wo sie benötigt werden.



Der Pfad zu den IDE-Konfigurationen hat sich geändert


Zum Beispiel unter macOS:
- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1


Mehr in der Hilfe .

Benutzerdefinierter Pfad zum Speichern von Laufkonfigurationen


Zuvor wurden Run-Konfigurationen in einem Ordner gespeichert .idea, den viele vollständig zu .gitignore hinzufügen (besser so ). Jetzt können Sie einen beliebigen Pfad auswählen und die Run-Konfiguration über das Versionskontrollsystem mit Kollegen teilen.

Dies kann besonders praktisch sein, wenn Sie neue Mitarbeiter einbinden: ein in PhpStorm geöffnetes Projekt abrufen, das mit einer Schaltfläche gestartet wird.

Dazu müssen Sie im Dialogfeld "Konfiguration ausführen / debuggen" die Option " Als Projektdatei speichern" auswählen. Durch Klicken auf das Zahnrad können Sie den gewünschten Pfad im Projekt auswählen.



Versionskontrolle


Neues Commit


Das Commit-Fenster ist im nicht modalen Modus verfügbar und wird links angezeigt. Daher wird die Arbeit an anderen Dateien während der Vorbereitung des Commits nicht blockiert, und weitere Informationen zu den Änderungen werden auf dem Bildschirm angezeigt.

Das neue Commit ist standardmäßig für neue Benutzer aktiviert und für diejenigen deaktiviert, auf denen PhpStorm bereits installiert ist.

Aktiviert durch die Option Nicht-modale Festschreibungsschnittstelle verwenden in Einstellungen / Einstellungen | Versionskontrolle | Festschreiben .



Git Branch Verbesserungen


In der unteren rechten Ecke des IDE-Fensters wird der aktuelle Git-Zweig angezeigt. Wenn Sie darauf klicken, wird das VCS | Git | Ein Zweig .
Hier haben wir ein Suchfeld hinzugefügt. Die Schaltfläche Aktualisieren aktualisiert die Liste der Remote-Zweige. Und für jedes Commit wird ein Indikator hinzugefügt: eingehend (blau) oder ausgehend (grün).



Überarbeitete interaktive Rebase


Mit Git Rebase können Sie den Verlauf von Commits neu schreiben. Jetzt können Sie "temporäre" Commits schnell entfernen, die Nachricht oder die Reihenfolge der Commits korrigieren. Natürlich kann dies alles manuell über die Konsole erfolgen, aber mit PhpStorm können Sie sofort sehen, was in einem bestimmten Commit geändert wurde.

Um zu beginnen, müssen Sie im Commit-Verlauf das gewünschte Basis-Commit auswählen und im Kontextmenü Interaktive Rebase von hier aus auswählen .



DB Tools


PhpStorm enthält fast alle Funktionen von DataGrip , sodass Sie den Test der DataGrip 2020.1-Version von unseren Kollegen sehen können.

Netz


Und wie immer sind alle Updates von WebStorm 2020.1 auch in PhpStorm enthalten.

Eine vollständige Liste der Änderungen finden Sie in den sehr umfangreichen Versionshinweisen .

Sie können die Versionsübersicht auch auf der Seite „ Was ist neu?Ansehen. Wenn Sie nur ein paar Minuten Zeit haben, finden Sie hier ein kurzes Video (in englischer Sprache) mit einer Demonstration der Hauptfunktionen der Veröffentlichung:



Und das ist die ganze Zeit. Vielen Dank für das Lesen bis zum Ende! Wir freuen uns über Fragen, Wünsche, Fehlerberichte und nur Gedanken in den Kommentaren.

Passen Sie auf sich auf!
Ihr JetBrains PhpStorm-Team

All Articles