Что нового в 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-форматирования. Так гораздо проще и приятнее читать код с множеством аннотаций.

Чтобы переключить новый отрендеренный вид, нажмите на значок в отступе Иконка отрендеренного вида рядом с любым блоком 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 проанализирует конфигурацию сервера и обнаружит наиболее распространенные проблемы.

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

Если информация из phpinfo() не помогла, вы можете использовать скрипт валидации PhpStorm на сервере.

Отладка возвращаемого значения с помощью 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 можно выбрать внешний форматер. Теперь вы можете использовать FriendsOfPHP/PHP-CS-Fixer или squizlabs/PHP_CodeSniffer для этой цели.

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

Популярный таск-раннер для PHP, Robo, получил следующее расширенное сопровождение:

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

Поддержка Prophecy

Если вы используете Prophecy в своих тестах, работа с ним в PhpStorm теперь станет проще.

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

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

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

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

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

Поддержка аннотаций для форматов массивов была добавлена в PhpStorm 2021.2, затем в 2022.1 мы добавили поддержку многострочного и вложенного синтаксиса для форматов массивов.

В 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

Установите дополнительные Docker-соединения с помощью Docker Contexts, вызвав контекстное меню Add Service в окне Services и выбрав 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 теперь поддерживает Vitest, нативный Vite-фреймворк для юнит-тестирования. Вы можете запускать, перезапускать и отлаживать тесты всеми привычными способами, в том числе пользуясь значками на полях редактора. Кроме того, для сценария All tests по умолчанию включен режим Watch. В этом режиме поддерживаются снэпшот-тестирование и анализ покрытия, что позволяет получать практически мгновенную обратную связь о покрытии кода тестами.


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