Что нового в PhpStorm 2022.1

PhpStorm 2022.1 — первое крупное обновление в этом году. В нем появилась поддержка многострочных и вложенных array shapes, рефакторинг Extract Method срабатывает без диалога, улучшена поддержка шаблонов Blade, WordPress, дженериков в PHP и многое другое.

Многострочные и вложенные array shapes

Поддержка array shape в блоках PHPDoc появилась еще в версии 2021.2. Однако поддерживались только однострочные аннотации и только первый уровень вложенности.

И вот в PhpStorm 2022.1 мы добавили полную поддержку многострочных и вложенных array shapes в PHPDoc и атрибуте #[ArrayShape]!

Добавьте аннотации array shape, чтобы получить автодополнение кода для ключей и вывести типы значений в структурах данных с простыми массивами или в объектоподобных массивах. В PhpStorm можно по вашему усмотрению использовать синтаксис PHPDoc и синтаксис атрибутов. Синтаксис поддерживается для типов возвращаемого значения и типов параметров.

Рефакторинг Extract Method без диалога

Extract Method — один из самых часто используемых рефакторингов в PhpStorm. Чтобы упростить код и создать новый метод, просто выберите нужный фрагмент кода и нажмите ⌘⌥M (Cmd+Alt+M / Ctrl+Alt+M).

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

В редакторе создается новый метод (или функция) без какого-либо диалога. При этом активируется курсор для редактирования имени нового метода.

Улучшенная поддержка шаблонов Laravel Blade

Раньше каждый блок кода в шаблонах Blade обрабатывался как независимая область. Это приводило к проблемам с анализом кода и автодополнением.

В PhpStorm 2022.1 мы изменили подход к обработке шаблонов Blade и нам удалось существенно улучшить работу автодополнения в файлах .blade.php.

Вместе с тем были устранены и другие ошибки, связанные с автодополнением и форматированием кода в шаблонах Blade. Подробнее.

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

Поддержка динамических путей с функцией `get_template_directory_uri()`

Открыть файл в редакторе PhpStorm можно, нажав ⌘+Click (Ctrl+Click) на пути к этому файлу. Однако это не работало для динамических путей в коде WordPress, если они включали в себя функции WordPress.

В новой версии мы добавили поддержку функции get_template_directory_uri() в путях. В дальнейшем появится поддержка других функций.

Переход от вызова хука к регистрации

Система хуков WordPress очень эффективна, но она не позволяет перейти от места, где был вызван хук, туда, где был объявлен обработчик.

Теперь слева от вызова на полях редактора появилась иконка. Нажав на нее, вы увидите список использований хука, включая регистрацию и другие вызовы.

Новые расширенные возможности метаданных PHP

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

Поддержка magic-методов __call и __callStatic

Если вы делаете вызовы методов через магические функции _call или _callStatic, то не сможете пользоваться автодополнением кода для методов, потому что они не определены.

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

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

Поддержка объединенных типов

Теперь в .phpstorm.meta.php можно указать объединенные типы как @|MyClass, чтобы помощь в написании кода для mock-функций.

Подробнее о других возможностях метаданных — в нашей документации.

Улучшенная поддержка аннотаций и дженериков

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

  • @psalm-import-type, @phpstan-import-type
  • @psalm-trace, @phpstan-trace
  • Дженерики в тегах @method

Новый мастер проекта Composer

Теперь при создании пустого проекта можно автоматически сгенерировать для него файл composer.json с нужными зависимостями. После создания проекта PhpStorm предложит их установить.

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

Новое окно Notifications

Вместо журнала событий теперь есть окно Notifications. В нем лучше структурированы уведомления IDE и отмечается все самое важное и полезное. По умолчанию новое окно расположено в правом нижнем углу IDE. Уведомления делятся на две категории: Suggestions и Timeline.

Обновленный диалог структурного поиска и замены

Вызовите функцию Structural Search and Replace через главное меню: Edit | Find | Search Structurally

В диалоге Structural Search and Replace теперь отображается список всех шаблонов, чтобы между ними было проще переходить.

Кроме того, в правом верхнем углу диалога Structural Search and Replace добавлена иконка Pin Dialog.

Равные вкладки в режиме Split

Теперь вкладки в редакторе можно сделать одинаковыми по ширине. Для этого в меню Settings | Advanced Settings | Editor Tabs выберите опцию Equalize proportions in nested splits.

Экспорт UML-диаграмм в другие форматы

В новой версии диаграммы можно экспортировать в форматах yEd (.graphml), JGraph (.drawio), Graphviz (.dot), Mermaid (.md), Plantuml, а также в файлы .uml IntelliJ IDEA. Благодаря этому их можно использовать в сторонних инструментах.

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

Выполнение команд из Markdown-файлов

README-файлы часто содержат шаги, необходимые для запуска приложения, а также перечень используемых команд. В PhpStorm 2022.1 эти команды можно запускать прямо из Markdown-файла — достаточно нажать на иконку Run слева от команды.

Копирование фрагментов кода из Markdown-файлов

Для Markdown появилось действие Copy code snippet, позволяющее быстро копировать данные в буфер обмена.

Обновленная плавающая панель инструментов в редакторе Markdown

Чтобы упростить форматирование Markdown-файлов, мы переработали плавающую панель инструментов, которая появляется при выделении текста. Изменился не только внешний вид панели: теперь с ее помощью можно создавать списки, а в выпадающем меню выбирать стили заголовков.

Вы также можете сами выбирать, что должно быть на этой панели. Для этого перейдите в Preferences / Settings | Appearance & Behavior | Menus and Toolbars | Markdown Editor Floating Toolbar.

VCS

Обновленное действие Annotate with Git Blame

Чтобы анализировать внесенные изменения было проще, мы улучшили работу действия Annotate with Git Blame. При наведении курсора на аннотацию IDE подсвечивает различия между строками прямо в редакторе, а при нажатии на аннотацию открывает вкладку Git Log.

Предлагаемые изменения в комментариях к пул-реквестам

В PhpStorm стало удобнее работать с предлагаемыми изменениями, поскольку теперь можно применять изменения в коде и создавать коммиты локально в IDE.

Обновленная панель Commit Details в окне Git

На панели Commit Details теперь содержится информация о подписях GPG и статусе сборки. Раньше эти данные можно было посмотреть только в Git-логе.

Новый интерфейс Git File History, независимый от индексирования

Новый интерфейс окна Git File History не зависит от процесса индексации: данные отображаются, даже если индексирование лога выключено.

Это самые важные изменения в новой версии. Подробнее об этих и других улучшениях читайте в блоге PhpStorm.