PhpStorm 2022.1


To nowe wydanie PhpStorm zawiera ulepszoną obsługę Blade i Twig, dodatkową funkcjonalność do adnotacji i atrybutów typu docblock, kilka nowych i przydatnych inspekcji, ulepszenia edytora i wiele więcej.

Ulepszenia dla szablonów Blade

Wcześniej PhpStorm traktował każdy blok kodu w szablonach Blade jako niezależny zakres. Spowodowało to wiele problemów, takich jak utrata ukończenia kodu.

W PhpStorm 2022.1 znacząco zmieniono sposób, w jaki IDE obsługuje szablony Blade. W rezultacie uzyskane uzupełnianie kodu w plikach Blade jest znacznie lepsze niż wcześniej.

Importowanie przestrzeni nazw z autouzupełnianiem

Można teraz również importować przestrzenie nazw w plikach kasetowych, zamiast zawsze używać FQCN. Wiele innych problemów z uzupełnianiem kodu i formatowaniem w szablonach Blade zostało również rozwiązanych, w tym:

  • Autouzupełnianie zmiennych PHP w Blade.
  • Blade: brak uzupełnienia metod wewnątrz tagów, jeśli istnieje blok php ().
  • Blade: dwa kolejne fragmenty @php są łączone ze sobą i generują ostrzeżenie „oczekiwane: wyrażenie”.
  • Blade: nieprawidłowe formatowanie z komentarzami HTML.
  • Blade nie wcina zagnieżdżonych instrukcji podczas formatowania.
  • Blade: bloki formatowania nie są wyrównane, jeśli po tagu zamykającym znajduje się komentarz HTML.
  • Blade: @section wewnątrz bloku @if pokazuje błąd „Zadanie nie jest zamknięte”.
  • Blade: obsługa zadań @js.
  • Blade: obsługa zadań @checked, @disabled, @selected, @prependonce, @pushonce.

Ulepszenia szablonów Twig

Podobnie jak w Blade, poprawiono również wsparcie dla Twig. Niektórzy użytkownicy wolą, aby ich tagi Twig nie były automatycznie zamykane po wpisaniu {%. To zachowanie można teraz skonfigurować w Preferencjach | Redaktor | Ogólne | Inteligentne klawisze | Gałąź.

Tagi otwierające i zamykające będą teraz edytowane jednocześnie, gdy zaktualizowano je z {% do {{ lub odwrotnie.

Ulepszenia dla WordPress

Przejście od wywołania połączenia do deklaracji

System połączeń WordPress jest potężny, ale opiera się na nazwach ciągów zdarzeń (akcji). Z tego powodu nie można było przeskoczyć bezpośrednio z miejsca jego wywołania do miejsca, w którym zadeklarowany jest kod obsługujący.

W PhpStorm 2022.1 po lewej stronie wywołania znajduje się ikona rynny. Po kliknięciu można zobaczyć listę zastosowań połączenia, w tym deklaracje i inne wywołania.

Obsługa ścieżek dynamicznych z get_template_directory_uri()

W PhpStorm można użyć ⌘+Klik (Ctrl+Klik) na ścieżkach plików, aby otworzyć odpowiednie pliki w edytorze.

Wcześniej to zachowanie nie działało w przypadku ścieżek dynamicznych w kodzie WordPress, gdy ścieżka była złożona za pomocą funkcji WordPress.

W tej wersji dodano obsługę funkcji get_template_directory_uri() w ścieżkach.

Refaktoryzacja metody ekstrakcji na miejscu

Refaktoryzacja metody Extract jest dostępna w PhpStorm od 2011 roku. Jest to jedna z najczęściej używanych refaktoryzacji. Wprowadzono już kilka ulepszeń w PhpStorm 2021.3.

Aby użyć tej refaktoryzacji, można wybrać fragment kodu i nacisnąć ⌘⌥M (Cmd+Alt+M / Ctrl+Alt+M).

Wcześniej otwierało to okno dialogowe konfiguracji refaktoryzacji. Nikt jednak nie lubi wyskakujących okienek, więc w PhpStorm 2022.1 w wielu przypadkach, gdy metoda jest wyodrębniana, dostępna będzie refaktoryzacja na miejscu.

Nie będzie żadnego dodatkowego okna. Zamiast tego w edytorze zostanie od razu utworzona nowa metoda (lub funkcja). Można od razu edytować nazwę i nacisnąć Enter po skończeniu. Nadal można też otworzyć okno dialogowe i dostosować ustawienia refaktoryzacji, klikając ikonę koła zębatego.

Wielowierszowe i zagnieżdżone kształty tablic

W PhpStorm 2021.2 wprowadzono obsługę kształtów tablic w blokach PHPDoc. Miało to jednak istotne ograniczenie — obsługiwane były tylko adnotacje jednowierszowe i jednopoziomowe.

Aby uzyskać obsługę multilinii, można było użyć atrybutu #[ArrayShape]. Jednak nadal nie wspierało to struktur zagnieżdżonych.

W PhpStorm 2022.1 dodano pełną obsługę wieloliniowych i zagnieżdżonych kształtów tablic zarówno w PHPDoc, jak i atrybutach.

Chociaż PHP ma świetny system obiektów, czasami definiowanie prawdziwej klasy może wydawać się przesadne i wygodniej byłoby pracować z prostymi strukturami danych lub tablicami obiektowymi.

W takich przypadkach należy zdefiniować strukturę tablic z adnotacjami kształtu tablicy, aby uzyskać uzupełnienie kodu dla kluczy i wywnioskować typy wartości.

Można używać zarówno PHPDoc, jak i składni atrybutów w PhpStorm, wedle potrzeby. Składnia jest obsługiwana w przypadku definicji typów zwracanych i parametrów.

Ulepszona obsługa adnotacji

W tym wydaniu określono jeszcze kilka adnotacji:

  • Wsparcie dla @psalm-type
  • Wsparcie dla @psalm-import-type
  • Wsparcie dla @psalm-trace
  • Wsparcie dla @phpstan-type
  • Wsparcie dla @phpstan-import-type

Typy ogólne w adnotacjach @method

Wsparcie dla metod generycznych w tagach @method jest szczególnie przydatne przy rozszerzaniu klas generycznych dostarczanych na przykład przez frameworki oraz gdy chce określić typy metod bez konieczności ich ręcznego reimplementowania.

Nowe zaawansowane możliwości metadanych PHP

Oprócz wbudowanych funkcji „świadomości kodu”, PhpStorm posiada również niezawodną zewnętrzną wiedzę o kodzie. Ta wiedza ma postać odcinków PHP i pliku .phpstorm.meta.php.

Użytkownik posiada dostęp do tego pliku, co pozwala na przykład na wprowadzanie zmian na poziomie projektu w sposobie, w jaki PhpStorm rozumie kod dostawcy – kod, do którego inaczej nie miałoby się dostępu.

Wsparcie dla __call i __callStatic

Jeśli kod opiera się na metodach __call lub __callStatic, można nie mieć uzupełniania kodu dla metod, ponieważ nie są one zdefiniowane.

W tej wersji już można dodać odpowiedni wpis metadanych i uzyskać autouzupełnianie dla takich połączeń.

Nowe inspekcje

Zduplikowany klucz tablicy

Zachowanie array_merge() i łączenia z operatorem + jest inne w PHP. Ten ostatni nie zastąpi wartości, jeśli klucz zostanie zduplikowany. Może to prowadzić do zamieszania i błędów, więc PhpStorm będzie podkreślał takie przypadki.

Użycie count($array) jako indeksu tablicy

Aby dołączyć element do tablicy, nie ma potrzeby jawnego określania indeksu. PhpStorm może ostrzec Cię o nadmiarowym wywołaniu count().

Zamień wywołanie pow() na **

PHP posiada operator potęgowania ** dostępny od wersji 5.6. PhpStorm nie będzie podkreślał użycia funkcji pow(), ale pokaże przydatną szybką poprawkę (Alt+Enter) do zastąpienia starych wywołań pow() operatorem **.

Właściwość można zadeklarować tylko do odczytu

Właściwości prywatne z dostępem tylko do odczytu wewnątrz klasy można zadeklarować za pomocą flagi tylko do odczytu. Wystarczy użyć skrótu Alt+Enter, aby zaktualizować deklarację właściwości.

Stała klasowa może być ostateczna

Począwszy od PHP 8.1, możliwe jest deklarowanie stałych jako finalnych. To dlatego PhpStorm pozwala dodać ostateczny modyfikator do stałych, które nie są dziedziczone (wystarczy użyć Alt+Enter).

Argumenty funkcji rand w odwrotnej kolejności

Ta inspekcja wyróżnia wywołania funkcji z rodziny rand, w których argument max jest mniejszy niż min. Na przykład wywołanie rand(10, 1) jest tym samym, co wywołanie rand(1, 10), ale mt_rand() ściśle określa kolejność swoich argumentów.

Nieprawidłowy cel próby z PHPUnit

PhpStorm pokaże ostrzeżenie gdy wykryje próbę uzyskania dostępu do prywatnej lub końcowej metody na próbnym obiekcie.

Modyfikator nadmiarowy

Ta nowa inspekcja zgłosi modyfikatory, które są używane we wzorcach wyrażeń regularnych, ale nie wpływają na dopasowanie:

  • /i (niewrażliwość na wielkość liter) we wzorcach, które nie zawierają liter.
  • /D (PCRE_DOLLAR_ENDONLY) we wzorcach, które nie zawierają znaku dolara lub zawierają modyfikator \m (PCRE_MULTILINE).
  • /s (kropka dopasowuje podziały wierszy) we wzorcach, które nie zawierają kropek.

Nieobsługiwany modyfikator

Ta inspekcja zgłosi użycie modyfikatora /e, który jest przestarzały w PHP 7.0 i nowszych.

Ulepszenia edytora Markdown

Uruchamiaj polecenia z plików Markdown

Pliki README często opisują kroki uruchamiania aplikacji, wymieniając polecenia, których należy użyć. PhpStorm 2022.1 pozwoli uruchomić te polecenia bezpośrednio z pliku Markdown – wystarczy kliknąć ikonę Uruchom w rynnie po lewej stronie polecenia.

Skopiuj fragment kodu dla Markdown

Dodano również nową akcję Kopiuj fragment kodu do bloków Markdown, która pozwoli na szybkie skopiowanie ich zawartość do schowka.

Zaktualizowany pływający pasek narzędzi edytora Markdown

Aby ułatwić formatowanie plików Markdown, przeprojektowano pływający pasek narzędzi który pojawia się po zaznaczeniu tekstu. Oprócz nowego projektu pasek narzędzi umożliwia teraz tworzenie list i udostępnia menu do wybierania stylów nagłówków.

Ulepszenia integracji VCS

Zaktualizowano adnotacje za pomocą Git Blame

Poprawiono funkcjonalność Adnotacji za pomocą Git Blame, aby ułatwić badanie wprowadzonych zmian. IDE podkreśla różnicę między wierszami bezpośrednio w edytorze po najechaniu kursorem na adnotację i otwiera okno narzędzia Git Log po kliknięciu.

Zaktualizowano szczegóły zatwierdzenia w oknie narzędzia Git

Szczegóły zatwierdzenia zawierają teraz informacje o podpisach GPG i stanie kompilacji. Wcześniej te dane były wyświetlane tylko jako kolumna w dzienniku Git.

Historia plików Git: nowy interfejs użytkownika bez indeksu

Nowy interfejs użytkownika okna narzędzia Historia plików Git jest teraz niezależny od procesu indeksowania. Dane są reprezentowane przez nowy interfejs, nawet jeśli indeks dziennika jest wyłączony.

Sugerowane zmiany w komentarzach do żądania ściągnięcia

Łatwiej jest teraz pracować z sugerowanymi zmianami w PhpStorm, ponieważ można teraz zastosować lub zatwierdzić zmiany lokalnie w IDE.

Definiowanie zewnętrznego narzędzia porównywania i scalania według typu nośnika pliku

PhpStorm 2022.1 umożliwia teraz określanie różnych zewnętrznych narzędzi do porównywania i scalania w zależności od typu pliku. Aby je skonfigurować, należy przejść do Ustawienia / Preferencje | Narzędzia | Porównaj i scal | Narzędzia różnic zewnętrznych.

Użytkowanie

Zaktualizowane okno dialogowe Wyszukiwanie strukturalne i zamienianie

Wyszukiwanie strukturalne i zamiana, lub po prostu SSR, umożliwia wyszukiwanie z uwzględnieniem kodu. Na przykład można znaleźć klasy, które zostały odziedziczone z pewnej klasy bazowej poprzez pośredniego przodka klasy. To jest coś, czego nie można łatwo osiągnąć za pomocą grep, ale można to zrobić z SSR.

W PhpStorm 2022.1 przeprojektowano okno dialogowe Wyszukiwanie strukturalne i zamienianie, aby zawierało listę wszystkich szablonów, i ułatwić nawigację między nimi.

Ponadto dodano ikonę pinezki w prawym górnym rogu okna dialogowego Wyszukiwanie strukturalne i zamienianie oraz przeniesiono pola wyboru Wstrzyknięty kod i Dopasuj wielkość liter na dół panelu Szablon wyszukiwania.

Klient HTTP: uruchamiaj żądania jednym kliknięciem

Podczas opracowywania interfejsów API bardzo wygodne jest testowanie punktów końcowych za pomocą wbudowanego klienta HTTP w PhpStorm.

Wcześniej można było umieścić kursor nad punktem końcowym w pliku .http i użyć intencji (Alt+Enter) do uruchomienia debugowania PHP. Spowoduje to dodanie do żądania pliku cookie XDEBUG_SESSION. Jednak za każdym razem trzeba było przechodzić przez podmenu.

W tej wersji ikona rynny zostanie zaktualizowana zgodnie z ostatnio wybraną opcją. W ten sposób możesz debugować punkty końcowe jednym kliknięciem.

Nowe okno narzędzia Powiadomienia

Zastąpiono instancję Dziennika zdarzeń nowym oknem narzędzia Powiadomienia.

Domyślnie nowe okno narzędzia znajduje się w prawym dolnym rogu okna IDE. Wszystkie powiadomienia, które się w nim pojawiają, można podzielić na dwie kategorie: Sugestie i Oś czasu.

Równomiernie podzielone karty

Można teraz równomiernie rozłożyć przestrzeń roboczą między zakładkami edytora, aby miały tę samą szerokość. Aby to ustawić, należy przejść do Ustawienia / Preferencje | Ustawienia zaawansowane | Karty edytora | Wyrównaj proporcje w zagnieżdżonych podziałach.

Ukryte etykiety zakładek w debugerze

Aby zmaksymalizować użyteczną przestrzeń w oknie narzędzia debugowania, domyślnie ukryto etykiety kart. Aby ponownie były widoczne lub aby dostosować ich lokalizację, wystarczy użyć opcji Pokaż etykiety kart w Ustawieniach układu lub wywołać ją za pomocą funkcji Wyszukaj wszędzie (⇧⇧ na macOS / Shift+Shift w systemie Windows/Linux) z aktywnym oknem narzędzia debugowania.

Ulepszenia dla Docker

Nowy interfejs widoku usług

Przerobiono interfejs użytkownika Docker-a w oknie narzędzi usług. Przebudowa została wdrożona dla kontenerów, obrazów, sieci i woluminów.

Obsługa Docker Registry V2

Dodano obsługę Docker Registry HTTP API V2 do użytku z Docker 1.6+. Można tworzyć proste lub chronione hasłem rejestry Docker V2 i wykonywać zwykłe czynności, takie jak przeglądanie, wypychanie i ściąganie obrazów.

Ulepszenia Vue

PhpStorm zawiera wszystkie ulepszenia HTML/CSS/JS i innych technologii internetowych z WebStorm.

Wersja IDE JetBrains 2022.1 zawiera kilka ulepszeń do Vue 3. W tej wersji, jeśli zdefiniowano komponenty jako globalne, IDE rozpozna je w plikach .vue. PhpStorm będzie również poprawnie obsługiwał składnię createApp. Poprawnie dopasuje aplikacje stworzone za pomocą createApp do powiązanych z nimi elementów.

Zdalny rozwój

Zdalne programowanie to funkcja, która pozwala uruchomić IDE na zdalnym serwerze i połączyć się z nim za pomocą klienta, zamiast uruchamiać całe IDE na komputerze lokalnym. To wydanie PhpStorm zawiera również kilka nowych funkcji zdalnego programowania.

Najbardziej godną uwagi funkcją jest widżet Centrum sterowania zaplecza, który pokazuje obciążenie procesora, pamięć, pojemność dysku i inne parametry, które mogą być potrzebne do monitorowania stanu zaplecza.

Wsparcie WebDAV

W tej wersji wprowadzono obsługę wdrażania serwerów WebDAV. Skonfigurować nowy serwer można pod Preferencje | Kompilacja, wykonanie, wdrażanie | Wdrożenie, tam wystarczy dodać nowy serwer typu WebDAV i podać parametry połączenia.

Zastępowanie parametrów wiersza polecenia Rsync

W PhpStorm 2021.3 wprowadzono Rsync do obsługi SFTP, aby zapewnić znacznie szybsze wdrożenia. Narzędzie Rsync zostało uruchomione z opcjami wiersza polecenia -zar, aby skompresować przesyłane dane (z), zachować uprawnienia, własność i znaczniki czasu przesyłanych plików i folderów (a) oraz rekursywnie przechodzić do podkatalogów (r).

W tej wersji opcje można dostosować. Można to zrobić przechodząc do Ustawienia / Preferencje | Narzędzia | Rsync i następnie podać wymagany zestaw opcji.