Что нового в PhpStorm 2023.3

Вот что мы подготовили для вас в этом обновлении:

  • Официальная версия AI Assistant
  • Поддержка Pest
  • Поддержка PHP 8.3
  • Улучшенная поддержка Symfony
  • Улучшения интерфейса

Официальная версия AI Assistant Публичный доступ

Мы официально выпустили своего ИИ-помощника AI Assistant, добавив ряд новых возможностей и улучшив уже известные функции, чтобы сделать работу в IDE JetBrains еще эффективнее.

Автодополнение кода на основе больших языковых моделей (LLM)

Автодополнение кода на основе больших языковых моделей (LLM)

Теперь AI Assistant умеет генерировать многострочные блоки кода. Просто начните вводить новую строку: если у LLM есть предложения, появится сниппет, набранный серым шрифтом. Чтобы принять предложенный код, нажмите Tab.

В настоящее время предложения генерируются в пределах контекста класса или внутри определений функции.

Генерация кода тестов

Генерация кода тестов

AI Assistant умеет также генерировать тесты для методов классов. Просто поместите курсор на метод класса, для которого нужны юнит-тесты, нажмите Alt+Enter, а затем AI Assistant, и выберите Generate Unit Tests.

Генерация кода в редакторе

Генерация кода в редакторе

Раньше генерировать сниппеты можно было с помощью чат-бота. Теперь для этого можно использовать действие AI Assistant | Generate code…: оно открывает окно запроса прямо в редакторе. В это окно нужно ввести описание кода, который вы хотите сгенерировать. После этого AI Assistant предложит свои варианты, которые можно принять целиком или частично.

Объяснение ошибок в консоли на основе ИИ

Объяснение ошибок в консоли на основе ИИ

Иногда при выполнении PHP-скрипта, при запуске конфигурации или при выполнении действия Composer по тем или иным причинам происходит ошибка. AI Assistant поможет выяснить причину проблемы. Нажмите кнопку Explain with AI в трассировке стека или в сообщении об ошибке, чтобы получить объяснение, сгенерированное ИИ.

Чтобы использовать AI Assistant как дополнительную функцию PhpStorm, вам потребуется подписка JetBrains AI Service.

Обновления Pest

PhpStorm now supports the Pest test framework out of the box. We recently agreed with the original author of the Pest plugin to take over its development and bundle it in PhpStorm. You can read the details in our recent blog post.

Тесты Pest

Как и тесты PHPUnit, тесты Pest теперь можно запускать прямо из PhpStorm. Если поместить курсор в тест и вызвать окно запуска, генерируется конфигурация запуска для этого теста. Если поместить курсор внутрь файла, но не внутрь конкретного теста, будут запущены все тесты в этом файле.

Утверждения

Благодаря появлению поддержки Pest в новой версии можно писать утверждения путем вызова функций или методов на $this. Кроме того, это позволяет улучшить работу автодополнения в функциях тестов: пользователь по мере набора кода видит доступные утверждения.

Пользовательские ожидания

В Pest можно писать пользовательские ожидания, чтобы сократить число стандартных проверок в тестах. PhpStorm поможет найти использования пользовательских ожиданий и переименовать их.

Поддержка PHP 8.3

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

Атрибут Override

Атрибут #[\Override]

В PHP 8.3 появился новый атрибут #[\Override]. Его можно использовать, чтобы явно показать свои намерения при переопределении метода. Движок PHP может проверить, действительно ли метод с атрибутом #[\Override] переопределяет родительский метод, и сгенерировать исключение, если это не так. PhpStorm 2023.3 заранее предупреждает вас о таких случаях.

Предложение добавить атрибут Override

Кроме того, в тех случаях, когда это применимо, PhpStorm предлагает добавить атрибут #[\Override].

Функция json_validate() Функция json_validate()

Новая функция json_validate()

В PHP 8.3 в стандартную библиотеку добавлена новая функция json_validate(). Раньше был только один способ проверить, является ли строка допустимым кодом JSON: декодировать его и посмотреть, возникнут ли ошибки. PhpStorm может распознавать такие шаблоны и предлагает заменить их вызовом функции json_validate(). Это удобно, если вам достаточно понимать, является ли введенная строка допустимым кодом JSON, поскольку этой функции нужно меньше памяти, чем для декодирования строки.

Типизированные константы классов

Типизированные константы классов

В PHP 8.3 можно объявлять типы для констант классов. Можно использовать любые объявления типов, кроме void, callable и never.

Для типизированных констант классов PhpStorm предлагает:

  • предложения по вставке соответствующих типов;
  • автодополнение подсказок типов;
  • проверки совместимости с типом значения по умолчанию;
  • проверки переопределения типа при переопределении константы в дочернем классе.
Устаревший синтаксис Устаревший синтаксис

Устаревший синтаксис

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

Поддержка Symfony

В PhpStorm 2023.3 добавлен ряд улучшений для разработчиков на Symfony.

Мастер создания проектов

Мастер создания проектов

Новый встроенный инициализатор проектов для Symfony позволяет создавать новые проекты, используя нужные типы и версии, прямо на главном экране.

Поддержка Doctrine Query Language в QueryBuilder

Поддержка Doctrine Query Language в QueryBuilder

Новая версия IDE обеспечивает полную поддержку DQL внутри вызовов методов QueryBuilder: подсветку, автодополнение полей, возможность разрешения в целевой класс модели и многое другое.

Преобразование аннотаций в атрибуты для Symfony и Doctrine

Преобразование аннотаций в атрибуты для Symfony и Doctrine

Following the introduction of attributes in PHP 8.0, Doctrine annotations are being deprecated and will soon be removed. Чтобы помочь вам перейти на атрибуты Doctrine, PhpStorm 2023.3 предлагает функцию их преобразования из аннотаций.

Кроме того, PhpStorm поддерживает преобразование аннотаций Symfony в соответствующие атрибуты, например #[Required], #[Route] и так далее.

Другие обновления PHP

Возможность исключения файлов внешней библиотеки из проекта

Возможность исключения файлов внешней библиотеки из проекта

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

Настройка подсветки дженериков

Настройка подсветки дженериков

Мы постоянно стремимся сделать работу с дженериками удобнее. Начиная с PhpStorm 2023.3, можно настроить цветовые обозначения для дженериков, чтобы их типы было легко отличить.

Возможность сворачивания многострочных атрибутов PHP

Возможность сворачивания многострочных атрибутов PHP

Атрибуты используются в коде все чаще, но читать код с длинными многострочными атрибутами из какого-то определенного фреймворка бывает тяжело. В PhpStorm 2023.3 эта проблема решена: многострочные атрибуты можно свернуть.

Преобразование метаданных PHPUnit из PHPDoc в атрибуты

Преобразование метаданных PHPUnit из PHPDoc в атрибуты

PHPUnit 10 introduced support for attributes for adding metadata to test classes and test methods, as well as tested code units. Мы внедрили специальную инспекцию и быстрое исправление, которые помогут перейти со старых аннотаций PHPDoc на новый стиль.

Системы контроля версий

Единый инструмент поиска различий

PhpStorm 2023.3 предлагает обновленный подход к проверке изменений в файлах. Вам больше не нужно просматривать файлы по одному: все измененные файлы из выборки отображаются в едином фрейме с возможностью прокрутки. Новый инструмент поиска различий можно открыть из окна Git Log. В настоящее время он поддерживает ревью в JetBrains Space, и мы работаем над обеспечением его совместимости с GitLab и GitHub.

Отладчик

Отладчик

В PhpStorm 2023.3 появился новый встроенный параметр Run to Cursor. Он позволяет в ходе отладки выполнить код до определенной строки. После приостановки выполнения программы наведите курсор мыши на строку, до которой нужно выполнить код, и откройте всплывающее окно Run to Cursor. Можно также поместить курсор в нужную строку и нажать сочетание клавиш Alt + F9.

Интерфейс

Возможность скрыть основную панель инструментов в режиме просмотра по умолчанию

Возможность скрыть основную панель инструментов в режиме просмотра по умолчанию

Мы изучили ваши отзывы о новом интерфейсе и добавили возможность скрыть основную панель инструментов при использовании IDE в режиме просмотра по умолчанию — точно так же, как это было в старом интерфейсе. Чтобы скрыть панель инструментов, откройте меню View | Appearance и снимите флажок Toolbar.

Возможность вернуться к варианту расположения окон по умолчанию

Возможность вернуться к варианту расположения окон по умолчанию

В версии PhpStorm 2023.1 мы добавили возможность сохранить несколько вариантов расположения окон и переключаться между ними, чтобы вам было удобнее настраивать свое рабочее пространство. В PhpStorm 2023.3 мы расширили возможности этой функции и добавили вариант Default layout, который позволяет быстро вернуть исходные настройки рабочего пространства. Этот вариант расположения окон нельзя изменить. Чтобы перейти к нему, откройте Window | Layouts.

Цветовые обозначения вкладок редактора по умолчанию

Цветовые обозначения вкладок редактора по умолчанию

Чтобы разработчикам было проще одновременно работать в редакторе с разными типами файлов, мы добавили цветовые обозначения вкладок редактора по умолчанию — они соответствуют обозначениям в окне Project.

Улучшенная поддержка TypeScript

Улучшенная поддержка TypeScript

Благодаря тому, что в PhpStorm добавлены все возможности WebStorm, IDE теперь успешно справляется с некоторыми неприятными проблемами, которые возникали при добавлении инструкций import type. Кроме того, стало удобнее работать с синтаксисом verbatimModuleSyntax. Мы добавили возможность настроить инструкции import type как в TypeScript. Кроме того, улучшено поведение поля exports в package.json для файлов TypeScript.

Закрытие одиночных тегов HTML в JSX

Обновления HTML

В новой версии, когда вы вставляете код HTML в файл JSX, PhpStorm не только преобразует атрибуты, но и автоматически закроет одиночные теги. Эту функцию можно настроить в меню Settings | Editor | General | Smart Keys | JavaScript.

Поддержка API @property для пользовательских свойств в CSS-файлах

Улучшения для CSS

To support the new @property API for creating custom CSS properties, PhpStorm 2023.3 now offers inspections and completion features for explicitly defining CSS custom properties, allowing you to check and restrict property types, establish default values, and determine inheritance possibilities for custom properties.

Улучшения для Vue 3

Улучшения для Vue 3

Мы добавили поддержку defineSlots: автодополнение и навигацию для имени slot, а также рефакторинг Rename. Кроме того, добавлена поддержка автодополнения для свойств с defineExpose. В PhpStorm 2023.3 необходимые импорты для компонентов будут добавляться, исходя из имени, определенного функцией defineOptions.