Что нового в PhpStorm 2022.3

В большом обновлении PhpStorm 2022.3 вас ждет новый интерфейс (в бета-режиме), поддержка PHP 8.2, Code Vision для PHP, предварительный просмотр быстрых исправлений, поддержка ParaTest, удобное отображение PHPDoc, поддержка Redis и многое другое.

Новый интерфейс Превью

Уже можно попробовать абсолютно новый интерфейс PhpStorm. По умолчанию он отключен, поскольку все еще находится на стадии бета-тестирования.

Переключиться на новый интерфейс можно в меню: Settings/Preferences | Appearance & Behavior | New UI Preview.

Он выглядит чище и аккуратнее, работает быстрее и при этом позволяет выполнять большинство действий так, как вы привыкли.

Взаимодействие с IDE

В новой версии вас ждет множество других визуальных улучшений. Вот наиболее заметные.

Code Vision

Прямо в редакторе, рядом с кодом, можно посмотреть дополнительную информацию о PHP-символах: классах, трейтах, интерфейсах, методах и функциях.

Вы увидите количество использований — больше не нужно нажимать на символ, чтобы это узнать.

IDE также покажет число наследников и реализаций для классов и интерфейсов соответственно.

Вы также получите информацию из Git о том, кто внес больше всего изменений в определенный фрагмент кода, что позволит вам быстро понять, кто лучше всех в нем разбирается.

Предпросмотр исправлений

Вы можете автоматически улучшить свой код, нажав Alt+Enter.

Теперь можно заранее посмотреть, что изменится, прежде чем применять быстрое исправление или intention-действие.

Новое отображение PHPDoc

В PhpStorm 2022.3 можно изменить внешний вид блоков PHPDoc с помощью опции, которая обеспечивает более удобное отображение и поддержку HTML-форматирования. Так гораздо проще и приятнее читать код с множеством аннотаций.

Чтобы посмотреть комментарий в новом виде, нажмите на значок Rendered view gutter icon рядом с любым блоком PHPDoc.

Чтобы включить рендеринг для всех комментариев PHPDoc, щелкните по значку правой кнопкой мыши и выберите Render All Doc Comments.

Обновленное окно Quick Documentation

Если нажать Ctrl+Q на любой функции, классе или методе, PhpStorm показывает документацию прямо в редакторе.

Мы полностью переработали это всплывающее окно: Больше не нужно переключаться в браузер и искать документацию, потому что все доступно прямо в IDE.

PHP 8.2

PhpStorm 2022.3 полностью поддерживает PHP 8.2. Большинство изменений в IDE органично впишутся в ваш рабочий процесс, поэтому мы рассказываем только о тех нововведениях, на которые стоит обратить внимание.

Классы readonly

Класс readonly – это быстрый способ объявить класс, который имеет только readonly-свойства. Такие классы можно использовать для обеспечения дополнительной целостности данных.

Для readonly-классов PhpStorm предоставляет:

  • Быстрое исправление для преобразования класса со свойствами, доступными только для чтения, в класс readonly.
  • Инспекцию для проверки того, что у класса readonly дочерние классы тоже readonly.
  • Обнаружение избыточных свойств, доступных только для чтения, в классах readonly.
  • Проверки на наличие запрещенных статических и динамических свойств в классах readonly.

Устаревшие динамические свойства

Обращение к несуществующим свойствам в PHP 8.2 вызовет сообщение о деприкации.

PhpStorm подсвечивает такие использования и предлагает исправить их: либо путем добавления свойства, либо с помощью атрибута #[AllowDynamicProperties].

Улучшения системы типов

В PHP 8.2 добавлена поддержка типов дизъюнктивной нормальной формы, а также отдельных типов null, true и false. Мы тоже добавили поддержку всех этих типов в PhpStorm.

Другие деприкации

В PHP 8.2 есть еще несколько деприкаций, и PhpStorm позаботится о том, чтобы вы могли их быстро обнаружить и исправить свой код.

Устаревшая интерполяция строк ${}

Раньше существовало три способа интерполяции, если нужно использовать переменную внутри строки. Один из них теперь считается устаревшим и в дальнейшем будет запрещен.

PhpStorm подсвечивает такие случаи, и вы можете использовать быстрое исправление по Alt+Enter, чтобы обновить свой код.

Устаревшие способы вызова функций

Некоторые способы вызова функций в PHP 8.2 признаны устаревшими.

PhpStorm подсвечивает некорректный код, и вы можете использовать Alt+Enter для быстрого исправления.

IDE может просканировать всю вашу кодовую базу сразу, чтобы обнаружить потенциальные проблемы. Перейдите в Code | Analyze Code | Run Inspection by Name, найдите, например, "dynamic property", и PhpStorm сделает все остальное.

Базы данных: поддержка Redis

Мы реализовали предварительный вариант долгожданной поддержки Redis.

Отладка

Если у вас возникли трудности с настройкой Xdebug, вот что теперь предлагает PhpStorm, чтобы определить проблему.

Проверка вывода phpinfo()

Добавьте вызов phpinfo() в свой PHP-скрипт или страницу и скопируйте вывод функции, который вы видите в браузере. Затем вызовите Run / Web Server Debug Validation, и откроется диалог, в который нужно вставить вывод phpinfo() из предыдущего шага.

PhpStorm проанализирует конфигурацию сервера и обнаружит наиболее распространенные проблемы.

Проверка конфигурации сервера с помощью скрипта

If the phpinfo() information didn’t help, you can use PhpStorm’s validation script on the server.

Отладка возвращаемого значения с помощью Xdebug

В Xdebug 3.2 появился дополнительный шаг отладки "возврат из функции", который позволяет проверить возвращаемое значение.

PhpStorm 2022.3 поддерживает эту новую возможность. Чтобы воспользоваться ею, нажмите Step Into, когда вы находитесь на последнем операторе в функции. В результате дополнительная переменная отобразится на вкладке Watches.

Интеграция с PHP-инструментами

Параллельный запуск тестов с помощью ParaTest

В PhpStorm наконец-то появилась поддержка параллельного тестирования!

Чтобы запускать тесты параллельно, нужно отметить галочкой опцию Use Paratest в конфигурации запуска ваших тестов и убедиться, что путь к исполняемому файлу ParaTest задан правильно. Обычно, если ParaTest добавлен в composer.json, путь выглядит примерно так: ./vendor/bin/paratest_for_phpstorm.

Внешние форматтеры для PHP

Теперь в меню Preferences | PHP | Quality Tools можно выбрать внешний форматер. You can now use FriendsOfPHP/PHP-CS-Fixer or squizlabs/PHP_CodeSniffer for this purpose.

Интеграция с Robo

A popular task runner for PHP, Robo, received the following extended support:

  • Если в проекте есть класс Robo, доступно специальное окно Robo tasks.
  • Текущая конфигурация для выполнения задач Robo доступна в контекстном меню и вызывается из Robo-метода.
  • Для каждого публичного метода внутри Robo-класса есть значок на поле редактора для соответствующих конфигураций.

Поддержка Prophecy

If you use the Prophecy mocking framework in your tests, working with it in PhpStorm will now be easier.

Другие возможности для PHP

Предварительный просмотр формата даты

Больше не нужно запоминать или искать форматы date(). PhpStorm 2022.3 выдает подсказку с примером даты при наведении на строку формата даты.

Кроме того, при редактировании строки формата даты можно пользоваться автодополнением с подсказками для всех символов, которые распознаются как параметры формата.

Поддержка array shape в циклах

Support for array shape annotations was added in PhpStorm 2021.2, then in 2022.1, we added multiline and nested syntax support for array shapes.

В PhpStorm 2022.3 реализован последний недостающий элемент: теперь работает автодополнение для array shape в циклах.

Новое решение для синхронизации настроек

Мы объединили два старых решения для синхронизации настроек (IDE Settings Sync и Settings Repository) в одно — Settings Sync. Оно позволяет надежно синхронизировать настройки между разными IDE и устройствами.

Если вы раньше не пользовались синхронизацией, но хотите попробовать новый способ, включите его в меню: Settings / Preferences | Settings Sync | Enable Settings Sync.

Docker

Подключение к Docker из WSL без Docker Desktop

Вы можете настроить этот тип соединения в меню Settings / Preferences | Build, Execution, Deployment | Docker.

Новое контекстное действие: Pull image

Вызовите контекстные действия (Alt+Enter) на подсвеченном имени образа и затем выберите Pull Docker image, чтобы извлечь необходимый образ, не запуская его, из Dockerfile, docker-compose.yml или даже из тестов с помощью Testcontainers.

Поддержка файлов .dockerignore

В файлах .dockerignore теперь работает подсветка и автодополнение.

Поддержка формата heredoc в файлах Dockerfile

Используйте многострочные скрипты прямо в Dockerfiles.

Docker-соединения из Docker Contexts

Set up additional Docker connections using Docker Contexts by calling the Add Service context menu in the Services view and selecting Docker Connections From Docker Contexts.

HTTP-клиент

Форматирование длинных запросов в HTTP-клиенте

В HTTP-клиенте расширены возможности форматирования запросов с длинными URL-адресами. Кроме того, можно использовать контекстное действие Put query parameters on separate lines, чтобы разбить запрос на несколько частей, расположенных на разных строках.

Скрипты, выполняемые перед запросами

HTTP-клиент теперь поддерживает блоки скриптов, которые выполняются перед запросами. Можно генерировать некоторые данные до выполнения запроса и передавать их в последующий запрос с помощью переменных.

Новые API для обработчиков JavaScript

PhpStorm теперь предоставляет сrypto API, позволяя вычислять хэш-значения md5 или sha1 для HTTP-запросов.

Теперь доступно больше случайных функций, что удобно для быстрого тестирования API.

Веб-разработка

Новые шаблоны проектов для Next.js и Vite

Новые шаблоны проектов для Next.js и Vite

В мастере создания проектов на начальном экране PhpStorm появились шаблоны для Vite и Next.js. Мы также привели шаблон для Vue в соответствие с последними стандартами.

Code Vision для JavaScript и TypeScript

Code Vision для JavaScript и TypeScript

Встроенные подсказки Code Vision теперь доступны для JavaScript и TypeScript. Эти помогают отслеживать использование различных классов, методов, интерфейсов и псевдонимов типов в вашем коде.

Обновления для Vue

Обновления для Vue

PhpStorm теперь может позаботиться о неразрешенных импортах и предлагает импортировать Vue-компоненты. Мы также поддержали синтаксис деструктурирования входных параметров, улучшили автодополнение кода и проверку типов для входных параметров компонентов библиотеки Vue, а также исправили несколько проблем с Nuxt 3.

Поддержка Vitest

Поддержка Vitest

PhpStorm now supports Vitest, a Vite-native unit test framework! Вы можете запускать, перезапускать и отлаживать тесты всеми привычными способами, в том числе пользуясь значками на полях редактора. Кроме того, для сценария All tests по умолчанию включен режим Watch. В этом режиме поддерживаются снэпшот-тестирование и анализ покрытия, что позволяет получать практически мгновенную обратную связь о покрытии кода тестами.


Мы рассказали вам о главных изменениях, но конечно, есть и другие. Подробнее обо всех нововведениях читайте в нашем блоге.