Hallo Habr! Wir freuen uns, die zweite Hauptversion von PhpStorm in diesem Jahr präsentieren zu können!
Unter dem Schnitt befindet sich eine detaillierte Analyse aller bemerkenswerten Änderungen und neuen Funktionen. Vorsicht - viele Bilder.
Unionstypen in PHP 8
PHP 8 wird so viele neue Funktionen haben, dass es in gewissem Maße sogar eine neue Sprache ist. Wir haben früh mit der Einführung der Unterstützung für die acht begonnen, und das erste große Feature waren die zusammengeführten Typen.
Verkettete Typen
T1|T2|...können überall dort verwendet werden, wo jetzt Typen angegeben werden können: in Argumenten, Eigenschaften und Rückgabewerten. In diesem Fall kann die Variable einen der aufgelisteten Typen annehmen.
Tatsächlich werden in PHPDoc schon lange verkettete Typen verwendet, aber jetzt überprüft der Interpreter sie tatsächlich zur Laufzeit.
Sprachversion wechseln
Um alle Möglichkeiten anzuzeigen, können Sie die Sprachversion unter Languages & Frameworks | manuell auf PHP 8 umstellen PHP | PHP-Sprachniveau .
Wenn der Code bereits neue Funktionen enthält, können Sie mithilfe einer Schnellkorrektur (Alt + Eingabetaste) wechseln.
Wenn die PHP-Version in composer.json angegeben ist, wird sie von PhpStorm automatisch aufgerufen.
Konvertieren von PHPDoc in native kombinierte Typen
Sie können eine Schnellkorrektur (Alt + Eingabetaste) für ein PHPDoc-Tag mit einem kombinierten Typ aufrufen.
Unnötiges PHPDoc entfernen
Wenn PHPDoc nur Typdeklarationen enthielt, kann es jetzt als redundante Schnellkorrektur (Alt + Eingabetaste) entfernt werden.
Kann eine solche Löschung immer als sicher angesehen und automatisch vor dem Festschreiben durchgeführt werden? Wir erwägen, eine solche Funktion hinzuzufügen.
Typüberprüfung
Früher war PhpStorm in der Lage, Typen zu analysieren und Verstöße anhand von Informationen aus PHPDoc-Tags zu finden. Mit nativen Deklarationen haben sich diese Möglichkeiten erweitert.
Es wird alles überprüft: Eigenschaften, Argumente, Rückgabewerte.
Dies ist besonders nützlich bei komplexem Code, bei dem Verstöße nicht sofort offensichtlich sind.
Der Pseudotyp false
Einige
falsebei einem Fehler zurückgegeben werden. Zum Beispiel ist dies , wie sie sich verhalten strpos(), array_search()und 310 andere Standardfunktionen.
In diesem Fall wäre es beispielsweise möglich, den Rückgabetyp als verkettet anzugeben
int|bool, aber tatsächlich truewird er niemals vorhanden sein.
Für solche Fälle wurde ein Pseudotyp eingeführt
false. Es kann nur in Joins verwendet werden. Andernfalls hebt PhpStorm den ungültigen Code hervor.
Doppelte und redundante Typen
Viele Kombinationen in Typgewerkschaften sind verboten oder einfach unnötig. Zum Beispiel:
bool|false- weil false enthalten ist inbool;Foo|Foooderint|string|INT- Wiederholung;object|User-objectenthält wissentlich alles andere;iterable|arrayoderiterable|Traversable-iterableenthält Array und Traversable;void- kann nur im Rückgabewert und nur für sich selbst verwendet werden;falseodernull- nur als Teil eines Vereins.
PhpStorm wird alle derartigen Verstöße hervorheben.
Nullable Typen
Die alte Syntax wird
?Typejetzt als Abkürzung für betrachtet Type|null.
Die Abkürzung c
?kann jedoch nicht in Verknüpfungen verwendet werden, da eine unlösbare Mehrdeutigkeit vorliegt.
In solchen Fällen bietet PhpStorm eine schnelle Lösung (Alt + Eingabetaste).
Ändern von Typen mit Vererbung
Es gibt zwei Regeln für Methoden:
Der Parametertyp ist kontravariant , dh er kann erweitert werden.
Der Rückgabetyp ist kovariant , dh er kann nur eingegrenzt werden.
In diesem Fall spielt die Reihenfolge der Typen keine Rolle und ist
Type1|Type2äquivalent Type2|Type1.
Der Typ der Eigenschaften kann nicht geändert werden. Der
Typ einer geerbten Eigenschaft muss auf das übergeordnete Element reduziert werden. Beispiel:
Neuer Control Flow Motor
Die Control Flow Engine wurde aktualisiert, um neue Inspektionen hinzuzufügen und viele alte Fehler zu beheben. Dadurch versteht PhpStorm den Code noch besser.
An einigen Stellen können Hervorhebungen und Warnungen bei neuen Inspektionen festgestellt werden. Einige von ihnen erfordern möglicherweise Ihre Aufmerksamkeit als potenzielle Fehlerquelle. Wenn Sie andere reparieren, wird der Code nur sauberer.
Hier einige Beispiele für Inspektionen.
Variable ist immer wahr oder falsch
Beispiel in der Parser.php- Datei von doctrine / orm.
Bedingung ist immer wahr
Beispiel in der FormValidator.php Datei von symfony / Form. Die Instanz des
Ergebnisses ist immer wahr.
Beispiel in der Datei Logger.php von symfony / monolog-bridge. wird immer vom Typ sein
$thisResetInterfaceweil dieser höher in der Hierarchie ist.
Expression ist immer null
Beispiel in ProcessUtils.php Datei von symfony / Prozess.
Neue Aktion: Typinfo (⌃⇧P / Strg + Umschalt + P)
Sie können das Caret über einen beliebigen Ausdruck bewegen und diese Aktion aufrufen, um zu sehen, welchen Typ PhpStorm für den Ausdruck abgeleitet hat. Verfügbar über das Menü Ansicht | Geben Sie Info oder die Tastenkombination ⌃⇧P / Strg + Umschalt + P ein.
Komponistenverbesserungen
Seit Version 2020.1 können alle Aktionen mit Composer-Abhängigkeiten direkt in PhpStorm in der Datei composer.json ausgeführt werden. In dieser Version gibt es mehrere Verbesserungen.
Unterstützung für benutzerdefinierte Repositorys Satis / Packagist
Wenn Sie im Abschnitt "Repositorys" eine benutzerdefinierte Quelle angeben, ist die Code-Vervollständigung für alle Pakete verfügbar. Paket- und Versionsinformationen werden in PhpStorm zwischengespeichert.
Wenn mehrere Versionen angegeben sind.
Wenn Versionen durch Kommas oder Pipe (
||) getrennt aufgeführt sind , funktioniert PhpStorm jetzt ordnungsgemäß und zeigt die verfügbaren Optionen an.
Link zum Code und zur Site
Jedes Paket im Popup mit Informationen enthält Links zu Sites.
Einstellungen für Codequalitätswerkzeuge
Wenn die Liste der Abhängigkeiten Tools für die Codequalität enthält, die in PhpStorm unterstützt werden, befindet sich gegenüber ein Schraubenschlüsselsymbol, um zu den Einstellungen zu gelangen.
Verbesserungen an Tools für die Codequalität
Übrigens über Qualitätswerkzeuge. PhpStorm 2020.2 enthält mehrere nützliche Ergänzungen.
Docker Compose-
Unterstützung PHP_CodeSniffer, PHP CS Fixer und PHP Mess Detector können über Docker Compose ausgeführt werden.
Ausnahmelisten für PHP_CodeSniffer
Wenn der benutzerdefinierte
ruleset.xmlAbschnitt einen Abschnitt enthält "exclude-pattern", wird dieser jetzt berücksichtigt und Dateien auf den angegebenen Pfaden werden in der IDE nicht analysiert.
Formatierung über einen Remote-Interpreter
PHP CS Fixer und PHPCBF können mit einem Interpreter über SSH, Docker, Docker Compose, Vagrant und andere ausgeführt werden.
Befehlszeilen-Tools
Alle Symfony-Befehle, Laravel Artisan-, Drupal Drush-, WP-CLI- und Composer-Skripte können in PhpStorm sehr schnell ausgeführt werden, ohne ein Terminal zu öffnen.
Fügen Sie dazu das entsprechende Werkzeug unter Extras | hinzu Unterstützung für Befehlszeilen-Tools .
Dann klicken, die Run etwas
Ctrl-Ctrl Zeile erscheint , in dem alle Befehle mit Auto-Vervollständigung zur Verfügung.
Ab dieser Version müssen Sie nicht einmal mehr etwas für Symfony, Laravel und Drush konfigurieren. Es reicht aus, das Projekt zu öffnen, zu klicken und den Befehl einzugeben. ️ Für Laravel unter macOS muss die Datei ausführbar sein ( ).
Ctrl-Ctrl
artisanchmod +x artisan
Darüber hinaus können Tools jetzt über beliebige Remote-Interpreter (SSH, Docker, Docker Compose, Vagrant) ausgeführt werden. Sie können Ihre PHP 8-Anwendung beispielsweise schnell testen, indem Sie einen Docker-Interpreter aus einem Bild hinzufügen
php:rc-cli.
Neues Refactoring: Klassenextraktion
Der Unterricht sieht zunächst ordentlich und sauber aus. Dann werden ihnen immer mehr neue Methoden und Eigenschaften hinzugefügt, und früher oder später ist die Klasse bereits "geschwollen" und mit Verantwortlichkeiten von allen Seiten überwachsen.
Hier kann es hilfreich sein, einer neuen Klasse eine Reihe verwandter Methoden und Eigenschaften zuzuweisen. Genau das bietet das neue Refactoring der Extract Class.
Um es zu versuchen, müssen Sie in die Klasse klicken
Ctrl+Tund Klasse extrahieren auswählen . PhpStorm fordert Sie auf, den Namen der neuen Klasse einzugeben, und Sie können sofort weitere Methoden und Klassen zum Abrufen auswählen.
Dieses Refactoring funktioniert auch für reguläre Funktionen.
Und mehr für PHP
Neue Inspektion: Die typisierte Eigenschaft ist möglicherweise nicht zugewiesen
Wenn eine typisierte Eigenschaft deklariert, aber nicht initialisiert wird, führt ein Versuch, sie zu lesen, zu einem Fehler
TypeError(es sei denn, eine magische Eigenschaft ist definiert __get()). PhpStorm hebt das Lesen von nicht initialisierten Eigenschaften hervor.
Neue Inspektion: Array wird nur mit Schreibzugriff verwendet
Beispiel aus der Datei SchemaTool.php aus doctrine / orm.
Das Array
$pkColumnsin der Methode wird gatherColumns()aktualisiert, aber nie gelesen.
Anpassen generierter Getter und Setter
Jetzt können Sie die Methodenbenennung anpassen, indem Sie zwischen
camelCase()und wählen snake_case().
Passen Sie außerdem die Reihenfolge an, in der sie der Klasse hinzugefügt werden.
Beide Optionen stehen im Editor | zur Verfügung Codestil | PHP in der Code - Generierung Registerkarte .
Richtige Auflösung für viele Projekte in einem Fenster
Wenn Sie mehrere Projekte in einem Fenster öffnen, werden häufig Fehler angezeigt, bei denen die Klasse mehrmals definiert wurde. Und wenn Sie versuchen, zur Definition einer Klasse zu gelangen, müssen Sie immer noch auswählen, welche.
PhpStorm 2020.2 hat diese Fehler nicht und der Übergang funktioniert wie erwartet.
Niedrigere Priorität für Klassen vom Anbieter
In der Liste der automatischen Vervollständigung werden Klassen direkt aus dem Projekt Vorrang eingeräumt, und Entitäten aus dem Ordner
vendorund den PHAR-Dateien werden mit einer niedrigeren Priorität versehen.
Fügen Sie allen ausgewählten Zeilen einen Cursor hinzu
Mit der neuen Aktion Caret pro ausgewählter Zeile hinzufügen wird am Ende jeder ausgewählten Zeile ein Cursor hinzugefügt und die Auswahl aufgehoben. Kann mit den Tasten ⌥⇧G / Alt + Umschalt + G aufgerufen werden.
Volle Unterstützung für GitHub-Pull-Anfragen
Die grundlegende Unterstützung für Pull-Anforderungen wurde in PhpStorm 2018.3 angezeigt. Seitdem wurden Updates durchgeführt, aber für viele Aktionen musste noch zum Browser gewechselt werden.
In PhpStorm 2020.2 können alle Pull-Request-Arbeiten direkt in der IDE ausgeführt werden!
Sie können über das VCS auf Pull-Anforderungen zugreifen Git | Zeigen Sie Pull-Anforderungen in der Symbolleiste oder durch Klicken an
Alt+7. Die erste ist eine Liste der verfügbaren Anforderungen mit Such- und Filteroptionen.
Durch Klicken auf eine Pull-Anfrage werden detaillierte Informationen dazu geöffnet: Prüfer, Tags, geänderte Dateien, Zeitleiste.
Der gesamte Ablauf der Überprüfung kann genau dort durchgeführt werden. Starten und fordern Sie eine Überprüfung an, kommentieren Sie Änderungen auf Zeilen- oder Festschreibungsebene, reichen Sie eine Überprüfung ein und führen Sie sie zusammen.
Die Ergebnisse der Überprüfungen, einschließlich der Ergebnisse des CI, werden unter der Zeitachse angezeigt.
Zuvor mussten Sie zum Zusammenführen einer Pull-Anforderung einen lokalen Zweig erstellen. Jetzt ist es nicht mehr erforderlich und Sie können per Knopfdruck zusammenführen.
OpenAPI-Unterstützung
Das OpenAPI Specifications Plugin ist für alle JetBrains IDEs verfügbar und funktioniert seit 2020.2. In den Open API-Spezifikationsdateien (
openapi.yaml/ openapi.jsonund swagger.yaml/ swagger.json) werden Hervorhebungen, Erweiterungen, Validierungen und Navigationen bereitgestellt.
Darüber hinaus stehen folgende Optionen zur Verfügung:
- Integration mit der Swagger-Benutzeroberfläche - wird direkt im IDE-Fenster gerendert.
- Codegenerierung.
- Strukturdifferenz für OpenAPI-Spezifikationen - ermöglicht es Ihnen, signifikante Änderungen schnell zu erkennen.
- Gatter-Symbole zum schnellen Erstellen von Anforderungen in einem HTTP-Client.
- Endpunkte in einem HTTP-Client vervollständigen.
- Refactoring umbenennen - Wenn Sie einen Endpunkt in einer Spezifikation umbenennen, wird er in der Anforderung des HTTP-Clients automatisch umbenannt.
Neues Inspektions-Widget
In der oberen rechten Ecke des Editors wird jetzt ein Widget mit der Anzahl der Probleme in der aktuellen Datei angezeigt.
Mit den Pfeilen können Sie schnell zum nächsten / vorherigen Problem springen (früher könnte dies mit den Tasten
F2/ geschehen Shift+F2).
Im Widget können Sie auswählen, welche Problemstufe angezeigt werden soll, z. B. nur Syntaxfehler oder alle Probleme.
Und auf das Widget klicken, wird eine neue Probleme Fenster öffnet sich mit einer Liste aller erkannten Probleme in der Datei.
Versionskontrolle
Git von WSL 2
PhpStorm kann jetzt die WSL Git-Binärdatei verwenden. Darüber hinaus bestimmt die IDE selbst, ob WSL installiert ist und ob Git darin verfügbar ist.
Die Einstellungen finden Sie unter Einstellungen | Versionskontrolle | Git .
️ Git funktioniert nur mit WSL2, da Git von WSL1 instabil ist und zu falschen Ergebnissen von Git-Befehlen führen kann.
Verbesserte Benutzeroberfläche zum Vergleichen von Zweigen
Mit PhpStorm können Sie alle Zweige vergleichen und sehen, welche Commits in den einen oder anderen eingegangen sind. Wählen Sie dazu einen beliebigen Zweig aus den im VCS- Popup | verfügbaren aus Verzweigen Sie und wählen Sie Vergleichen mit Aktuell aus dem Kontextmenü .
In PhpStorm 2020.2 werden die Protokolle und Festschreibungsunterschiede direkt im Editor angezeigt. Dadurch können weitere Informationen auf dem Bildschirm angezeigt werden.
Aktualisierte Befehlsdialoge
Die Dialoge für die Befehle Git Merge, Pull und Rebase wurden neu gestaltet und vereinheitlicht. Fehlende Optionen hinzugefügt und jetzt können Sie den vollständigen Git-Befehl sehen, der ausgeführt wird.
Alle Befehle sind im VCS | verfügbar Git .
Neue Aktion: Commit entfernen
Ein zusätzliches oder temporäres lokales Commit kann jetzt direkt aus dem Protokoll in PhpStorm entfernt werden. Wählen Sie dazu im Kontextmenü des Commits Drop Commit aus .
Neue Aktion: Commits zu einem zusammenführen (Squash)
Sie können auch mehrere Commits zu einem kombinieren. Beispielsweise kann es praktisch sein, den Verlauf zu löschen, bevor eine Pull-Anforderung erstellt oder Änderungen übertragen werden. Wählen Sie
mehrere Commits im Protokoll aus und wählen Sie Squash Commits ... aus dem Kontextmenü.
Für beide Aktionen wird hinter den Kulissen gearbeitet
git rebase.
DB Tools
PhpStorm enthält fast alle DataGrip- Funktionen , die in der DataGrip 2020.2-Versionsübersicht unserer Kollegen behandelt werden.
Netz
Und wie immer sind auch alle Updates von WebStorm 2020.2 in PhpStorm enthalten. Mit einem Plugin kann Prettier beispielsweise auch als Standardformatierer für PHP-Dateien verwendet werden.
Sie können PhpStorm 2020.2 auf der Seite „ Was ist neu ? “ Herunterladen .
Und hier ist ein Video (auf Englisch), das die Hauptmerkmale der Veröffentlichung zeigt:
Das ist die ganze Zeit. Danke fürs Lesen bis zum Ende! Wir freuen uns über Fragen, Vorschläge, Fehlerberichte und nur Gedanken in den Kommentaren.
Ihr JetBrains PhpStorm-Team