Что нового в PhpStorm 2021.2

PhpStorm 2021.2 — это крупное обновление IDE, в котором реализована предварительная поддержка дженериков в PHP и перечислений, которые появятся в версии PHP 8.1. Также добавлены однострочные аннотации array shape, улучшенное автоматическое форматирование PHP-кода, новые инспекции, рефакторинги и множество других усовершенствований.

Дженерики в PHP

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

Дженерики в PHP

Мы добавили поддержку дженериков с помощью аннотации @template. Благодаря этому во многих случаях упрощается работа с коллекциями, поскольку предложения будут содержать элементы ожидаемого типа.

Для шаблонов фабрик теперь можно использовать аннотацию class-string<T> — это улучшит работу автодополнения кода.

Предварительная поддержка не является полной и имеет определенные ограничения. Подробнее об этом читайте в нашем блоге.

Перечисления PHP 8.1

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

Перечисления — одна из самых долгожданных возможностей, которые появятся в версии PHP 8.1.

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

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

Backed Enum

Значения перечисления могут иметь скалярные эквиваленты. Это полезно, если нужно сохранить перечисление в хранилище данных. Такие перечисления называются backed enum.

Используя быстрое исправление, можно добавить к backed enum объявление скалярного типа.

Кроме того, перечисления удобно использовать вместе с другими возможностями, например, с условиями и выражениями сопоставления.

Дополнительные сведения

Array shapes

Array shapes

Если код содержит объектоподобные массивы, теперь их структуру можно определить с помощью аннотации PHPDoc: array{key: type, key: type, ...}.

PhpStorm обеспечивает автодополнение кода для массивов с такими аннотациями — это сокращает время на написание кода и защищает от ошибок.

Поддержка ограничена однострочными определениями array shape. Для более крупных структур часто рекомендуется использовать реальные объекты и классы.

Усовершенствованный рефакторинг Extract Method

В новой версии был улучшен один из самых часто используемых рефакторингов PhpStorm — Extract Method.

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

Чтобы использовать этот рефакторинг, выберите фрагмент кода и нажмите ⌘⌥M (Cmd+Alt+M / Ctrl+Alt+M).

Рефакторинг дубликатов кода

В PhpStorm есть инспекция Duplicated code fragment. Она выделяет любые фрагменты кода, которые очень похожи между собой. При этом форматирование, имена переменных и порядок выражений могут быть разными, но результат должен быть одинаковым.

Эта инспекция выделяет первые строки дублирующихся фрагментов. Теперь для такого кода можно быстро выполнить рефакторинг. Нажмите Alt+Enter на подсвеченной строке и вызовите рефакторинг Extract Method из быстрого исправления дубликатов кода.

Кроме того, во время рефакторинга PhpStorm может быстро находить более мелкие дублирующиеся фрагменты кода в текущей области видимости (методе, классе или файле). Выделите фрагмент кода и нажмите ⌘⌥M (Cmd+Alt+M / Ctrl+Alt+M), чтобы вызвать рефакторинг. В нижней части диалогового окна вы увидите флажок Review and replace duplicates.

Новый умный селектор фрагментов кода

Новый умный селектор фрагментов кода

Рефакторинг Extract Method можно вызвать, даже не выделяя фрагмент кода. В этом случае PhpStorm предлагает список возможных фрагментов. Предлагаемые фрагменты уже отфильтрованы и содержат только сегменты, для которых имеет смысл выполнять рефакторинг.

Улучшенное действие Expand selection

Вы, вероятно, знаете, что фрагмент кода можно выбрать с помощью действия Expand / Shrink selection: ⌥+Up / ⌥+Down (Ctrl+W / Ctrl+Shift+W). Это один из самых быстрых способов выбрать код для рефакторинга.

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

И это еще не все улучшения рефакторинга Extract Method! Подробнее — в нашем блоге.

Инспекции и быстрые исправления

В каждой версии появляются новые инспекции, которые помогают тратить меньше времени на поиск и устранение ошибок. Чтобы применить исправление, нажмите Alt+Enter на подсвеченном фрагменте кода в PhpStorm.

Замена условия на оператор «?->»

Замена условия на оператор «?->»

Ненужные проверки можно заменить новым безопасным оператором PHP 8. Чтобы выполнить преобразование, нажмите Alt+Enter.

Использование константы из класса, где она определена

Использование константы из класса, где она определена

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

Избыточные условия в логических выражениях

Избыточные условия в логических выражениях

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

Инспекции Refactoring Opportunities

Мы добавили новую группу инспекций в раздел PHP Settings / Preferences | Editor | Inspections.

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

Нажав на значок, можно вызвать предлагаемый рефакторинг.

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

Список используемых метрик приведен в описании каждой инспекции.

Подробнее

IDE

Выполнение тестов перед коммитом

Выполнение тестов перед коммитом

В список действий, которые могут выполняться перед коммитом, было добавлено выполнение тестов. Поставьте флажок Run Tests и выберите нужную конфигурацию. Перед отправкой кода в систему контроля версий его стоит проверить.

Кроме того, теперь можно настроить параметры Analyze code и Cleanup: для этого надо нажать на Choose profile рядом с соответствующим пунктом.

Действия при сохранении кода

Действия при сохранении кода

Мы добавили новую страницу конфигурации Preferences / Settings | Tools | Actions on Save.

Там приведен список действий, которые могут выполняться при нажатии клавиш Ctrl+S или при автоматическом сохранении. Они включают в себя проверки кода, форматирование, очистку кода, развертывание и т. д.

Единообразное поведение для Show Diff

Единообразное поведение для Show Diff

Независимо от того, как вы вызываете действие Show Diff, PhpStorm по умолчанию отображает различия между исходными и измененными файлами в редакторе. Если вам удобнее отслеживать изменения в отдельном окне, просто вытащите нужный файл из редактора.

Текстовый поиск по версиям Local History

Текстовый поиск по версиям Local History

Local History — очень популярная функция среди разработчиков. Новое улучшение позволяет быстро найти в локальной истории изменений нужный текст, используя поле поиска в диалоговом окне Local History.

Текстовый поиск по версиям Local History

Цифровая подпись GPG

PhpStorm 2021.2 дает новую возможность защитить коммиты. Теперь коммиты в Git можно подписать с помощью GPG. Перейдите в меню Settings | Version Control | Git, нажмите кнопку Configure GPG Key и выберите нужный ключ из раскрывающегося списка.

Локализация интерфейса

Локализация интерфейса на китайский, корейский и японский языки

Начиная с этой версии пользовательский интерфейс PhpStorm полностью локализован на китайский, корейский и японский. Локализованный интерфейс можно скачать в виде плагинов с отдельными языковыми пакетами, которые легко установить в IDE*. Более 1,5 млн пользователей начали использовать частично локализованные EAP-версии. Теперь доступна полностью локализованная версия.

Поддержка веб-технологий

В новую версию PhpStorm вошли все функции и улучшения из WebStorm 2021.2. Некоторые поддерживаются по умолчанию, другие — через бесплатные плагины из Plugin Marketplace.

Рефакторинг для хуков useState в React

Рефакторинг для хуков useState в React

Теперь PhpStorm может переименовывать значения и функции useState. Установите курсор на значение состояния и нажмите ⇧F6/Shift+F6 или выберите Refactor | Rename в контекстном меню.

Автоматический импорт для require()

Автоматический импорт для require()

Новая версия PhpStorm может добавлять отсутствующие операторы импорта при использовании автодополнения во время работы с модулями CommonJS.

Инструменты для работы с базами данных

Узнайте, что нового в DataGrip 2021.2 — вся эта функциональность также доступна в PhpStorm. Вот лишь некоторые из обновлений.

Источник данных DDL

Источник данных DDL

В новой версии можно создать источник данных DDL на основе обычного. На диске создаются файлы DDL, а на их основе — новый источник данных. Благодаря этому вы всегда сможете пересоздать эти файлы и обновить источник данных DDL.

Автозаполнение полей и операторов для MongoDB

Автозаполнение полей и операторов для MongoDB

В новой версии автодополнение кода стало доступно для консоли MongoDB.

Другие улучшения

Вот еще лишь некоторые из множества улучшений, появившихся в PhpStorm 2021.2:

  • предпросмотр файлов HTML и PHP в браузере с помощью встроенного веб-сервера PhpStorm: теперь PhpStorm может автоматически перезагружать открытые страницы при сохранении изменений;
  • упорядочивать окна стало проще: наведите курсор на заголовок окна, которое нужно переместить, и перетащите его в нужное место;
  • PhpStorm автоматически проводит очистку любых директорий кэша и логов, которые обновлялись более 180 дней назад. Очистку можно также запустить вручную в меню Help | Delete Leftover IDE Directories;
  • добавлены новые настройки терминала: выбор формы курсора и возможность использования клавиши Option как метамодификатора;
  • в Preferences добавлена новая страница Advanced settings с расширенными настройками PhpStorm;
  • значительно повышена скорость загрузки больших коллекций файлов через FTP-соединение;
  • добавлена поддержка параметра levels для команды dirname();
  • устранены все известные ошибки форматирования PHP-кода.