PhpStorm 2022.2


PhpStorm 2022.2 to duża jak i ważna aktualizacja, która zapewnia obsługę Mockery i Rector, ulepszoną obsługę generyków i wyliczeń, ulepszenia naszego debuggera oraz klienta HTTP i wiele więcej.

Wsparcie rectora

Rector pomaga w zbiorczych automatycznych aktualizacjach PHP i refaktoryzacji kodu. To niesamowite narzędzie właśnie otrzymuje wsparcie w PhpStorm.

Aby korzystać z obsługi Rectora w PhpStorm, należy w pierwszej kolejności zainstalować Rectora i go skonfigurować.

Następnie należy utworzyć nową konfigurację uruchomienia specjalnie dla Rectora. PhpStorm może to zrobić automatycznie – wystarczy kliknąć prawym przyciskiem myszy na folder który Rector ma naprawić, a następnie wybrać Uruchom | Rektor

Rector można również uruchomić bezpośrednio z pliku konfiguracyjnego rector.php z przydatną ikoną rynny.

Gdy Rector zakończy skanowanie, PhpStorm wyświetli listę plików, które chce zmienić. Następnie można przejrzeć zmiany w PhpStorm, wybrać poszczególne pliki i foldery, a na koniec zastosować wszystkie wybrane zmiany.

Ponieważ Rector jest konfiguracją uruchomioną, istnieje również możliwość jej skonfigurowania. Jest to dostępne w Uruchom | Edytuj konfiguracje lub Edytuj konfiguracje z menu Akcje

Wsparcie Mockery

Mockery jest to jeden z najpopularniejszych frameworków mockingowych do testów jednostkowych w PHP. Razem ze wsparciem dodano obsługę autouzupełniania i wglądu w kod w wielu miejscach, a także kilka przydatnych inspekcji.

Autouzupełnianie dla mocków

Właściwe autouzupełnianie jest teraz dostępne dla mockowanych obiektów. Zarówno metody, jak i właściwości mockowanego obiektu są dostępne w menu autouzupełniania, wraz z funkcjonalnością, którą Mockery zapewnia za pośrednictwem jego mockowanych obiektów.

Obsługa nazw klas jako ciągów

Możliwe jest również przekazywanie nazw klas za pomocą ciągu w funkcji mock(). PhpStorm zasugeruje odpowiednią nazwę klasy, automatycznie ją uzupełni i zaoferuje ten sam wgląd w model obiektu, który zostanie zaprezentowany przy użyciu prawdziwej nazwy klasy.

Wsparcie dla mockowania chronionych metod

PhpStorm po wykryciu próby mockowania chronionej metody zaoferuje dodanie metody shouldAllowMockingProtectedMethods().

Mockowanie interfejsów

PhpStorm poprawnie wykryje mockowane interfejsy dla danej klasy i będzie w stanie zasugerować na podstawie definicji interfejsu.

Częściowa obsługa mock

Wgląd w atrapy obiektów będzie działał nawet w przypadku częściowych mocków.

Wyróżnianie nieudanych asercji testowych

Za każdym razem, gdy jedno z potwierdzeń testowych nie powiedzie się, PhpStorm podświetli dokładną linię, w której się nie powiodła, i umożliwi ponowne uruchomienie testu od nieudanej linii, dzięki nowej sugestii menu kontekstowego. Wystarczy nacisnąć Alt + Enter w nieudanym wierszu, aby ponownie uruchomić ten konkretny test.

Nowe inspekcje

Każde większe wydanie PhpStorm przynosi kilka nowych inspekcji. Oto one, dostępne od tego wydania:

Łączenie wielu wywołań isset w jedno

Dzięki temu że istnieje możliwość przekazania wielu argumentów do jednego wywołania isset(), sensowne jest, aby PhpStorm informował o możliwych refaktoryzacjach w celu oczyszczenia kodu.

używanie in_array() i array_key_exists() gdy jest to możliwe

PhpStorm będzie w stanie wykryć pętle, które można zoptymalizować do wywołań in_array() lub array_key_exists().

Dodawanie nazwy zmiennych do @var i @param docblocks, gdy są niejednoznaczne

Czasami PhpStorm nie może określić, do której zmiennej odnosi się @var lub @param docblock, więc dodano inspekcję, aby ułatwić wskazanie właściwej zmiennej.

Konwertuj tablicę / obiekt do analizowania na iterowalny

W PHP, tablica/ obiekt przemierzalny jest równa wbudowanemu typowi iterowalnemu. PhpStorm zasugeruje teraz zastąpienie pierwszego z drugim, co zaowocuje czystszym kodem.

Konwersja do <?php echo …; ?> w <?= i na odwrót

PhpStorm pozwala teraz przełączać się między i <?php echo …; ?> i <?= w całych plikach za jednym naciśnięciem przycisku.

Zamiana prostych wywołań preg_split() na explode()

PhpStorm będzie teraz wykrywał proste wywołania preg_split() i sugerował użycie explode().

Ulepszona konfiguracja do podświetlania inspekcji

Poprawiono sposób konfigurowania preferencji wyróżniania inspekcji. Za pomocą nowego menu rozwijanego Podświetlanie w edytorze można zmienić styl w jaki dana inspekcja będzie wyświetlana w edytorze.

Szybszy dostęp do ustawień uzupełniania kodu

Gdy zajdzie potrzeba edycji ustawień automatycznego uzpełniania, można teraz przejść do ustawień uzupełniania kodu bezpośrednio z wyskakującego okienka uzupełniania kodu w edytorze.

Poprawy debuggera

Oprócz nowych inspekcji wprowadzono również kilka ulepszeń poprawiających pracę debugera:

Umieść $this na górze, jeśli jest to możliwe podczas debugowania

Podczas debugowania w kontekście klasy $this będzie teraz zawsze na wierzchu.

Pokaż konkretny typ i dzieci tablicy w panelu zmiennych debugowania

Panel zmiennych debugera pokazuje teraz zawartość tablicy.

Wyświetl reprezentację __toString() na obiekcie

Gdy obiekt implementuje metodę __toString(), ta reprezentacja tekstowa zostanie również wyświetlona w panelu zmiennych.

Dodawanie typu wyliczenia do okna dialogowego „Nowa klasa PHP

Już można szybko tworzyć wyliczenia za pomocą okna dialogowego Utwórz klasę. Opcja „Wyliczenie” będzie dostępna tylko w projektach, które mają poziom PHP ustawiony na 8.1 lub wyższy.

Gdy istnieje potrzeba dokonania zmian w domyślnym wygenerowanym szablonie, można przejść do Ustawienia / Preferencje | Redaktor | Szablony plików i kodów | Pliki | PHP Enum i zmienić tam szablon.

Generyki

Int<min, max>

Od teraz obsługiwany jest typ int<min, max>, co oznacza, że ​​można zdefiniować minimalną i maksymalną wartość liczby całkowitej, aby dokładniej kontrolować, co może trafić do zmiennej.

Generyczne wsparcie dla iterowalnych obiektów

PhpStorm będzie teraz mógł również wywnioskować typy podczas zapętlania się nad obiektami iteracyjnymi.

Wnioskowanie typów z zamknięć

PhpStorm jest teraz w stanie wywnioskować typy ogólne z wartości zwracanych przez zamknięcie. Ta funkcja jest często używana w kolekcjach Laravela, gdzie zamknięcie jest do funkcji kolekcji, takiej jak map() lub first().

Generyki w cechach

Można teraz używać generyków w połączeniu z cechami, używając adnotacji @use.

Obsługa omijania typów ogólnych

PhpStorm teraz lepiej obsługuje metody takie jak Collection::lazy(), gdzie typy generyczne są przesyłane do innego obiektu.

Oto inne zmiany dotyczące generyków:

  • Ulepszona obsługa zagnieżdżonych generyków.
  • Odwracanie typów ogólnych.
  • Obsługa generyków w iteratorach — Iterator działa teraz zgodnie z oczekiwaniami.
  • Obsługa generyków w obiektach iteracyjnych — iterable działa teraz poprawnie.
  • @extends \SplFixedArray teraz działa zgodnie z oczekiwaniami.
  • Ulepszone wnioskowanie o typie ogólnym.

Anonimowy @var w oświadczeniach zwrotnych

Można teraz dodać @var przed instrukcją return, aby określić konkretną wartość zwracaną funkcji bez konieczności wprowadzania zmiennej tymczasowej.

Klikalne adresy URL w wartościach ciągów PHP, JSON, YAML i .properties

Pliki PHP, JSON, YAML i .properties zawierają teraz automatycznie wstawiane odwołania internetowe do wartości zaczynających się od http:// i https://. Można łatwo otworzyć te linki w przeglądarce internetowej za pomocą jednego kliknięcia.

Blade: durektywy @props i @aware

Obecnie obsługiwane są dyrektywy @props i @aware w komponentach kasetowych.

Stylowanie kodu: końcowe przecinki

Można skonfigurować PhpStorm, aby automatycznie wstawiał końcowe przecinki w listach parametrów, listach użycia zamknięcia i wywołaniach funkcji. Wystarczy przejść do Ustawienia / Preferencje | Redaktor | Styl kodu | PHP | Konwersja kodu, aby skonfigurować te opcje.

Ulepszona konfiguracja narzędzi wykonawczych i jakości

Wprowadzono znaczne ulepszenia konfiguracji środowisk wykonawczych i narzędzi jakości. Można teraz określić, który plik binarny PHP powinien być używany w poszczególnych środowiskach wykonawczych.

Zmieniono również nazwę domyślnego lokalnego środowiska wykonawczego PHP na System PHP, aby nieco bardziej rozjaśnić jego treść. Wcześniej nazywał się Local, co było nieco mylące.

Można wybrać inne środowisko wykonawcze dla poszczególnych narzędzi jakości, a Xdebug zostanie domyślnie wyłączony podczas uruchamiania tych narzędzi jakości.

Jest jeden przypadek, w którym Xdebug nie jest wyłączony przez PhpStorm: gdy wybrano System PHP jako środowisko rozruchowe dla dowolnego narzędzia jakości. W takim przypadku PhpStorm użyje instalacji PHP danego systemu bez żadnych zmian. Więc jeśli Xdebug jest włączony w instalacji systemu, PhpStorm go nie wyłączy.

Dołączona wtyczka mapy klawiszy VSCode

Wtyczka mapy klawiszy VSCode jest teraz domyślnie dołączona, co oznacza, że ​​nie trzeba już jej ręcznie instalować. Wybrać mapę klawiszy VSCode można przechodząc do Ustawienia / Preferencje | Mapa klawiszy.

Ulepszenia klienta HTTP

Wprowadzono kilka zmian i ulepszeń w kliencie HTTP:

Obsługa WebSocket

Klient HTTP obsługuje teraz protokół WebSocket. Wystarczy użyć słowa kluczowego WEBSOCKET, aby zainicjować połączenie WebSocket.

Obsługa GraphQL

Dodano również obsługę żądań GraphQL w kliencie HTTP. PhpStorm może teraz wysyłać zapytania GraphQL przez protokoły HTTP i WebSockets po rozpakowaniu.

Uruchamianie środowiska za pomocą ikony rynny

Jest nowy wygodny sposób wyboru środowiska biegu za pomocą ikony w rynnie. Aby włączyć tę funkcję, należy wybrać opcję Wybierz środowisko przed uruchomieniem z pola rozwijanego Uruchom z polem wyboru.

Pasek postępu odpowiedzi

Poprawiono również widok odpowiedzi, dodając pasek postępu, który umożliwia śledzenie procesu pobierania.

Automatyczne połączenie Dockera po ponownym uruchomieniu IDE

PhpStorm teraz automatycznie łączy się z Dockerem po ponownym uruchomieniu IDE. To nowe ustawienie jest domyślnie włączone w Ustawienia/Preferencje | Ustawienia zaawansowane | Doker.

Opcje połączenia z Dockerem dla dodatkowych demonów Docker

PhpStorm jest teraz zintegrowany z Colima i Rancher, aby obsługiwać więcej opcji nawiązywania połączeń z demonami Dockera.

Skrót klawiaturowy do globalnej zmiany rozmiaru czcionki

W tej wersji rozwiązano od dawna zgłoszone żądanie funkcji, wprowadzając skrót klawiaturowy, który zmienia rozmiar czcionki na wszystkich kartach. Zwiększyć rozmiar czcionki można poprzez naciśnięcie Ctrl+Shift+./Alt+Shift+. . Aby go zmniejszyć, należy nacisnąć Ctrl+Shift+,/Alt+Shift+,.

Podczas powiększania lub pomniejszania kodu w edytorze pojawi się również wskaźnik pokazujący bieżący rozmiar czcionki i opcję przywrócenia domyślnego.

Scalanie okien projektów na Macu

Okna na Macu obsługują widok wielu kart, a PhpStorm pozwala teraz scalić wszystkie otwarte okna projektu w ten widok z wieloma kartami za pomocą Window | Scal wszystkie okna projektu.

Ulepszenia Markdown

Wprowadzono kilka ulepszeń w plikach Markdown.

Generowanie spisu treści

Trwają prace nad ulepszeniem obsługi plików Markdown. W tej wersji dodano nową akcję Generuj spis treści, która znacznie uprości tworzenie spisu treści dla plików Markdown. Można użyć ⌘N /Alt+Insert, co spowoduje wyświetlenie wyskakującego okienka Insert… . Następnie można wybrać Spis treści, który zostanie wygenerowany automatycznie.

Eksperymentalne wsparcie dla Front Matter w plikach Markdown

Wprowadzono eksperymentalną obsługę nagłówków YAML Front Matter, które można włączyć za pomocą klucza rejestru markdown.experimental.frontmatter.support.enable.

Nowe pole opisu dla zakładek mnemonicznych

Zintegrowano pole Opis w oknie dialogowym Dodaj zakładkę mnemoniczną, dzięki czemu można od razu dodać opcjonalny opis do zakładki.

Ulepszona obsługa technologii web

Oto kilka najważniejszych nowości dotyczących technologii internetowych.

Wsparcie dla samodzielnych komponentów Angular

Najważniejszym dodatkiem wprowadzonym w tej wersji, jest obsługa autonomicznych komponentów Angular. PhpStorm teraz poprawnie rozpoznaje komponenty, dyrektywy i potoki oznaczone jako standalone: true.

Aktualizacje dla Vue 3

PhpStorm 2022.2 zawiera kilka poprawek, w tym zrozumienie zawężania typów w dyrektywach v-if/else.

Obsługa TypeScript 4.7

PhpStorm 2022.2 jest dostarczany w pakiecie z TypeScript 4.7, obsługującym nowe funkcje językowe, takie jak moduleSuffixes i ESM w Node.js. Automatycznie wstawi rozszerzenie .js do instrukcji import, jeśli moduł jest ustawiony na node16 lub nodenext w pliku tsconfig.json. Dodatkowo PhpStorm obsługuje pole typesVersions w plikach package.json.

Szybsze działanie

W tym wydaniu JetBrains Runtime 11 (JBR11) jest zamieniane na JetBrains Runtime 17 (JBR17). Będzie to miało następujące skutki:

  • Znacząca poprawa wydajności, umożliwiająca szybsze i płynniejsze działanie IDE.
  • Lepsze bezpieczeństwo, ponieważ JBR17 jest oparty na najnowszym OpenJDK LTS.
  • Lepsza wydajność renderowania w systemie macOS, ponieważ JetBrains Runtime 17 wykorzystuje interfejs API Metal.
  • Zwiększona dostępność w systemie macOS, ponieważ JBR17 oferuje integrację z czytnikiem ekranu VoiceOver.
  • Wykorzystanie interfejsu Vector API, jeszcze bardziej poprawiające wydajność.