PhpStorm 2022.1 — первое крупное обновление в этом году. В нем появилась поддержка многострочных и вложенных array shapes, рефакторинг Extract Method срабатывает без диалога, улучшена поддержка шаблонов Blade, WordPress, дженериков в PHP и многое другое.
Поддержка array shape в блоках PHPDoc появилась еще в версии 2021.2. Однако поддерживались только однострочные аннотации и только первый уровень вложенности.
И вот в PhpStorm 2022.1 мы добавили полную поддержку многострочных и вложенных array shapes в PHPDoc и атрибуте #[ArrayShape]!
Добавьте аннотации array shape, чтобы получить автодополнение кода для ключей и вывести типы значений в структурах данных с простыми массивами или в объектоподобных массивах. В PhpStorm можно по вашему усмотрению использовать синтаксис PHPDoc и синтаксис атрибутов. Синтаксис поддерживается для типов возвращаемого значения и типов параметров.
Extract Method — один из самых часто используемых рефакторингов в PhpStorm. Чтобы упростить код и создать новый метод, просто выберите нужный фрагмент кода и нажмите ⌘⌥M (Cmd+Alt+M / Ctrl+Alt+M).
Раньше это сочетание клавиш открывало диалог настройки рефакторинга. Однако от всплывающих окон все уже устали, поэтому во многих случаях для извлечения метода можно будет сразу применить рефакторинг.
В редакторе создается новый метод (или функция) без какого-либо диалога. При этом активируется курсор для редактирования имени нового метода.
Раньше каждый блок кода в шаблонах Blade обрабатывался как независимая область. Это приводило к проблемам с анализом кода и автодополнением.
В PhpStorm 2022.1 мы изменили подход к обработке шаблонов Blade и нам удалось существенно улучшить работу автодополнения в файлах .blade.php
.
Вместе с тем были устранены и другие ошибки, связанные с автодополнением и форматированием кода в шаблонах Blade. Подробнее.
Открыть файл в редакторе PhpStorm можно, нажав ⌘+Click (Ctrl+Click) на пути к этому файлу. Однако это не работало для динамических путей в коде WordPress, если они включали в себя функции WordPress.
В новой версии мы добавили поддержку функции get_template_directory_uri()
в путях. В дальнейшем появится поддержка других функций.
Система хуков WordPress очень эффективна, но она не позволяет перейти от места, где был вызван хук, туда, где был объявлен обработчик.
Теперь слева от вызова на полях редактора появилась иконка. Нажав на нее, вы увидите список использований хука, включая регистрацию и другие вызовы.
Вы, возможно, знаете, что при анализе кода PhpStorm полагается не только непосредственно на код, но и учитывает некоторую внешнюю информацию о нем. Она хранится в файле .phpstorm.meta.php, с помощью которого можно дать PhpStorm больше информации о кодовой базе, улучшив работу автодополнения.
Если вы делаете вызовы методов через магические функции _call
или _callStatic
, то не сможете пользоваться автодополнением кода для методов, потому что они не определены.
В новой версии можно добавить соответствующие метаданные, чтобы автодополнение для таких методов заработало.
Можно даже автоматически обрабатывать динамические вызовы, получая имя конкретного метода из значения параметра.
Теперь в .phpstorm.meta.php можно указать объединенные типы как @|MyClass
, чтобы помощь в написании кода для mock-функций.
Подробнее о других возможностях метаданных — в нашей документации.
Мы продолжаем улучшать поддержку дженериков на основе аннотаций. В этой версии мы разобрались еще с несколькими случаями, в том числе:
@psalm-import-type
, @phpstan-import-type
@psalm-trace
, @phpstan-trace
@method
Теперь при создании пустого проекта можно автоматически сгенерировать для него файл composer.json
с нужными зависимостями. После создания проекта PhpStorm предложит их установить.
Вместо журнала событий теперь есть окно Notifications. В нем лучше структурированы уведомления IDE и отмечается все самое важное и полезное. По умолчанию новое окно расположено в правом нижнем углу IDE. Уведомления делятся на две категории: Suggestions и Timeline.
Вызовите функцию Structural Search and Replace через главное меню: Edit | Find | Search Structurally…
В диалоге Structural Search and Replace теперь отображается список всех шаблонов, чтобы между ними было проще переходить.
Кроме того, в правом верхнем углу диалога Structural Search and Replace добавлена иконка Pin Dialog.
Теперь вкладки в редакторе можно сделать одинаковыми по ширине. Для этого в меню Settings | Advanced Settings | Editor Tabs выберите опцию Equalize proportions in nested splits.
В новой версии диаграммы можно экспортировать в форматах yEd (.graphml), JGraph (.drawio), Graphviz (.dot), Mermaid (.md), Plantuml, а также в файлы .uml IntelliJ IDEA. Благодаря этому их можно использовать в сторонних инструментах.
README-файлы часто содержат шаги, необходимые для запуска приложения, а также перечень используемых команд. В PhpStorm 2022.1 эти команды можно запускать прямо из Markdown-файла — достаточно нажать на иконку Run слева от команды.
Для Markdown появилось действие Copy code snippet, позволяющее быстро копировать данные в буфер обмена.
Чтобы упростить форматирование Markdown-файлов, мы переработали плавающую панель инструментов, которая появляется при выделении текста. Изменился не только внешний вид панели: теперь с ее помощью можно создавать списки, а в выпадающем меню выбирать стили заголовков.
Вы также можете сами выбирать, что должно быть на этой панели. Для этого перейдите в Preferences / Settings | Appearance & Behavior | Menus and Toolbars | Markdown Editor Floating Toolbar.
Чтобы анализировать внесенные изменения было проще, мы улучшили работу действия Annotate with Git Blame. При наведении курсора на аннотацию IDE подсвечивает различия между строками прямо в редакторе, а при нажатии на аннотацию открывает вкладку Git Log.
В PhpStorm стало удобнее работать с предлагаемыми изменениями, поскольку теперь можно применять изменения в коде и создавать коммиты локально в IDE.
На панели Commit Details теперь содержится информация о подписях GPG и статусе сборки. Раньше эти данные можно было посмотреть только в Git-логе.
Новый интерфейс окна Git File History не зависит от процесса индексации: данные отображаются, даже если индексирование лога выключено.
Это самые важные изменения в новой версии. Подробнее об этих и других улучшениях читайте в блоге PhpStorm.