PhpStorm 2021.2 — это крупное обновление IDE, в котором реализована предварительная поддержка дженериков в PHP и перечислений, которые появятся в версии PHP 8.1. Также добавлены однострочные аннотации array shape, улучшенное автоматическое форматирование PHP-кода, новые инспекции, рефакторинги и множество других усовершенствований.
В настоящее время PHP не поддерживает дженерики на уровне языка, но они уже очень широко используются с помощью аннотаций. Их применение делает код более безопасным и предсказуемым при работе с коллекциями, контейнерами, фабриками и другими приложениями.
Мы добавили поддержку дженериков с помощью аннотации @template
. Благодаря этому во многих случаях упрощается работа с коллекциями, поскольку предложения будут содержать элементы ожидаемого типа.
Для шаблонов фабрик теперь можно использовать аннотацию class-string<T>
— это улучшит работу автодополнения кода.
Предварительная поддержка не является полной и имеет определенные ограничения. Подробнее об этом читайте в нашем блоге.
В конце 2021 года должна выйти версия 8.1 интерпретатора PHP. Как обычно, мы начали внедрять поддержку заранее.
Перечисления — одна из самых долгожданных возможностей, которые появятся в версии PHP 8.1.
С выходом PhpStorm 2021.2 вы можете начать использовать их уже сейчас. IDE предлагает варианты автодополнения кода, а валидация защищает от их неправильного использования.
Перечисление в PHP содержит набор значений, может иметь методы и использоваться в качестве подсказки типа. Во всех этих случаях PhpStorm обеспечивает подсветку ошибок и корректные предложения, экономя ваше время.
Значения перечисления могут иметь скалярные эквиваленты. Это полезно, если нужно сохранить перечисление в хранилище данных. Такие перечисления называются backed enum.
Используя быстрое исправление, можно добавить к backed enum объявление скалярного типа.
Кроме того, перечисления удобно использовать вместе с другими возможностями, например, с условиями и выражениями сопоставления.
Если код содержит объектоподобные массивы, теперь их структуру можно определить с помощью аннотации PHPDoc: array{key: type, key: type, ...}
.
PhpStorm обеспечивает автодополнение кода для массивов с такими аннотациями — это сокращает время на написание кода и защищает от ошибок.
Поддержка ограничена однострочными определениями array shape. Для более крупных структур часто рекомендуется использовать реальные объекты и классы.
В новой версии был улучшен один из самых часто используемых рефакторингов 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 / Shrink selection: ⌥+Up / ⌥+Down (Ctrl+W / Ctrl+Shift+W). Это один из самых быстрых способов выбрать код для рефакторинга.
В новой версии появилось небольшое, но очень полезное обновление: теперь можно выбирать блоки без фигурных скобок.
И это еще не все улучшения рефакторинга Extract Method! Подробнее — в нашем блоге.
В каждой версии появляются новые инспекции, которые помогают тратить меньше времени на поиск и устранение ошибок. Чтобы применить исправление, нажмите Alt+Enter на подсвеченном фрагменте кода в PhpStorm.
Ненужные проверки можно заменить новым безопасным оператором PHP 8. Чтобы выполнить преобразование, нажмите Alt+Enter.
PhpStorm подсвечивает константы, доступ к которым осуществляется через подкласс или подинтерфейс, а не из сущностей, в которых они определены. Чтобы заменить имя используемой сущности на имя сущности, в которой определена константа, воспользуйтесь быстрым исправлением Alt+Enter.
Новая версия PhpStorm позволяет находить избыточность при анализе условий. Это может быть полезно при неочевидных проверках, когда выявить избыточные условия с ходу невозможно.
Мы добавили новую группу инспекций в раздел PHP Settings / Preferences | Editor | Inspections.
Инспекции, входящие в эту группу, помогают найти фрагменты кода, для которых может быть нужен рефакторинг. По умолчанию они отключены, но даже в этом случае вы увидите дополнительный значок в поле редактора рядом с найденным фрагментом кода. При этом код в редакторе не будет подчеркнут.
Нажав на значок, можно вызвать предлагаемый рефакторинг.
Эти инспекции представляют собой сочетание различных метрик качества кода: цикломатической сложности, глубины вложений, количества используемых переменных, общего числа строк и т. д.
Список используемых метрик приведен в описании каждой инспекции.
В список действий, которые могут выполняться перед коммитом, было добавлено выполнение тестов. Поставьте флажок Run Tests и выберите нужную конфигурацию. Перед отправкой кода в систему контроля версий его стоит проверить.
Кроме того, теперь можно настроить параметры Analyze code и Cleanup: для этого надо нажать на Choose profile рядом с соответствующим пунктом.
Мы добавили новую страницу конфигурации Preferences / Settings | Tools | Actions on Save.
Там приведен список действий, которые могут выполняться при нажатии клавиш Ctrl+S или при автоматическом сохранении. Они включают в себя проверки кода, форматирование, очистку кода, развертывание и т. д.
Независимо от того, как вы вызываете действие Show Diff, PhpStorm по умолчанию отображает различия между исходными и измененными файлами в редакторе. Если вам удобнее отслеживать изменения в отдельном окне, просто вытащите нужный файл из редактора.
Local History — очень популярная функция среди разработчиков. Новое улучшение позволяет быстро найти в локальной истории изменений нужный текст, используя поле поиска в диалоговом окне Local History.
PhpStorm 2021.2 дает новую возможность защитить коммиты. Теперь коммиты в Git можно подписать с помощью GPG. Перейдите в меню Settings | Version Control | Git, нажмите кнопку Configure GPG Key и выберите нужный ключ из раскрывающегося списка.
Начиная с этой версии пользовательский интерфейс PhpStorm полностью локализован на китайский, корейский и японский. Локализованный интерфейс можно скачать в виде плагинов с отдельными языковыми пакетами, которые легко установить в IDE*. Более 1,5 млн пользователей начали использовать частично локализованные EAP-версии. Теперь доступна полностью локализованная версия.
В новую версию PhpStorm вошли все функции и улучшения из WebStorm 2021.2. Некоторые поддерживаются по умолчанию, другие — через бесплатные плагины из Plugin Marketplace.
Теперь PhpStorm может переименовывать значения и функции useState
. Установите курсор на значение состояния и нажмите ⇧F6/Shift+F6 или выберите Refactor | Rename в контекстном меню.
Новая версия PhpStorm может добавлять отсутствующие операторы импорта при использовании автодополнения во время работы с модулями CommonJS.
Узнайте, что нового в DataGrip 2021.2 — вся эта функциональность также доступна в PhpStorm. Вот лишь некоторые из обновлений.
В новой версии можно создать источник данных DDL на основе обычного. На диске создаются файлы DDL, а на их основе — новый источник данных. Благодаря этому вы всегда сможете пересоздать эти файлы и обновить источник данных DDL.
В новой версии автодополнение кода стало доступно для консоли MongoDB.
Вот еще лишь некоторые из множества улучшений, появившихся в PhpStorm 2021.2:
dirname()
;