Что нового в PhpStorm 2023.1

В большом обновлении PhpStorm 2023.1 вас ждет интеграция с 3v4l.org, повышение производительности, улучшенный новый интерфейс, отладчик с анализом потока данных для PHP, поддержка проектов с несколькими файлами composer.json и многое другое.

Новый интерфейс Бета

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

Переключиться на новый интерфейс можно в настройках: Preferences / Settings | Appearance & Behavior | New UI.

Компактный режим

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

Чтобы включить компактный режим, войдите в меню View и выберите Appearance | Compact Mode.

Отображение имени файла при скрытых вкладках

Теперь вы можете видеть имя открытого файла, когда вкладки редактора скрыты.

Разделение окон инструментов по вертикали

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

Чтобы добавить окно в эту область и разместить его в нижней части, перетащите значок окна вниз по боковой панели и опустите под разделитель. Можно сделать и по-другому: кликните правой кнопкой по значку и в открывшемся меню выберите новое положение окна с помощью действия Move to.

Вкладки проектов на macOS

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

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

Переработанный виджет запуска

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

PHP

Запуск скретч-файлов PHP на 3v4l.org

PhpStorm 2023.1 natively integrates with 3v4l.org and allows you to run PHP scratch files on any desired PHP version without installing anything on your local machine.

Создайте скретч-файл, нажав Ctrl+Alt+Shift+Insert.

Выберите нужную версию PHP из выпадающего списка и нажмите кнопку Run. Вы увидите вывод скрипта рядом с редактором.

If you find 3v4l.org useful, consider supporting its author with a donation here: github.com/sponsors/SjonHortensius.

Оптимизация производительности

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

Общие индексы для популярных пакетов PHP

Некоторые PHP-пакеты настолько популярны, что не имеет смысла перестраивать их индекс для каждого экземпляра PhpStorm. Вместо этого мы уже рассчитали для вас индексы многих популярных PHP-пакетов, таких как PHPUnit, aws/aws-sdk-php, doctrine/orm, laravel/framework, symfony/* и других.

Теперь, когда вы открываете проиндексированный PHP-проект, PhpStorm проверяет composer.json, чтобы узнать, какие из указанных зависимостей имеют заранее построенный общий индекс.

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

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

Было:

Стало:

Действие Go to Class доступно во время индексирования

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

Go to Class (Ctrl+O или Navigate | Class...) — одно из самых популярных действий для навигации по коду. В этой версии оно доступно в любое время, даже когда индекс перестраивается. Раньше, пока индексирование не было завершено, отображался пустой список.

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

Еще одно действие, которое теперь доступно, даже когда индексирование еще продолжается, — аннотирование кода.

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

Умное сканирование файлов для индексации

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

Ускоренные инспекции

Мы работали над повышением производительности всех инспекций, особенно самых медленных. Некоторые из них теперь выполняются на 30-40% быстрее, в то время как для других прирост производительности не столь значителен, но общий эффект все равно заметен. В следующем видео показываем, что изменилось по сравнению с предыдущими версиями.

Шаблоны Blade

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

Предложение изменить настройки Microsoft Defender для повышения производительности

Антивирусные проверки Windows Defender в режиме Real-Time Protection могут значительно снизить скорость работы IDE. Чтобы этого избежать, PhpStorm теперь предлагает добавить отдельные папки в список исключений Defender.

Параметры можно изменить автоматически или сначала проверить инструкции по настройке Defender и сделать это вручную.

Отладчик с анализом потока данных

Те, кто предпочитает отлаживать PHP-приложения с помощью Xdebug, теперь могут воспользоваться еще одной продвинутой функцией — отладчиком с анализом потока данных (Data Flow Analysis). Вы сможете заранее увидеть ветки, которые никогда не будут выполнены, не проходя шаг за шагом по коду.

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

Отключение анализа потока данных во время отладки

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

Если вы хотите отключить эту функцию навсегда, сделайте это в разделе Preferences/Settings | PHP | Debug | Xdebug.

Ограничения

PhpStorm не производит предварительные вычисления значений свойств из-за технических ограничений. Мы работаем над этим.

Поддержка всех тегов PHPStan и Psalm

Все существующие теги PHPStan и Psalm теперь правильно анализируются в PhpStorm. Так гораздо проще читать код с множеством аннотаций.

Поддержка проектов с несколькими файлами composer.json и разными поставщиками

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

Мы заложили основу для поддержки такого рода проектов с несколькими файлами composer.json и каталогам `vendor`. Это принесло следующие улучшения:

  • Исключенные каталоги установлены правильно — это повышает общую производительность, поскольку мы проводим меньше анализа и запускаем меньше инспекций. Это также делает мультиразрешение более стабильным.
  • Корни PSR определяются правильно — рефакторинги, такие как Move Class, работают как надо, когда вы перетаскиваете классы между приложениями в проекте.
  • IDE корректно сообщает о недостающих расширениях в composer.json для каждого приложения.

Новые инспекции

Пользовательские инспекции поиска и замены на основе регулярных выражений

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

Перейдите в раздел Settings/Preferences | Editor | Inspections и нажмите на значок +. Выберите в списке Add RegExp Search Inspection (или Replace), чтобы открыть диалог, в котором можно настроить новую инспекцию.

Для более сложных случаев, которые могут включать проверку иерархии типов, используйте инспекции Structural Search and Replace (SSR). Learn more about them in the docs, or check out the example in the video.

Встроенные PHP-инспекции

Каждая версия PhpStorm включает в себя несколько новых инспекций, и PhpStorm 2023.1 не исключение. Вот самые интересные:

Переопределение метода/расширение класса, помеченного как @final

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

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

Несовместимые типы возвращаемого значения

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

Утверждение можно заменить на assertTrue/assertFalse.

Несколько вызовов isset() с вложенными массивами или объектами можно заменить на один.

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

Улучшения для работы с PHP

Интерактивные пути и ссылки на классы для вывода var_dump() / dd() в терминале

Мы стремимся упростить отладку для тех, кто предпочитает подход «dump and die». В качестве первого шага мы сделали пути к файлам и ссылки на классы интерактивными. Нажатие на них откроет соответствующий файл в редакторе.

Описания режимов открытия файлов во всплывающем окне автодополнения

В предыдущей версии PhpStorm мы добавили описания для различных форматов в функциях даты и времени.

Для всех функций, которые принимают режимы файлов, в списке вариантов автодополнения теперь отображаются подробные описания этих режимов. Вам больше не придется запоминать, что означают r+, a и w.

Больше шаблонов Live Templates

Мы добавили несколько новых шаблонов Live Templates, включая fun для шаблона функции и fori для индексированных циклов.

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

Изменение масштаба всей IDE

Теперь в PhpStorm можно увеличивать и уменьшать размер всех элементов интерфейса одновременно. Для этого выберите View | Appearance в главном меню и настройте нужный масштаб.

Это может быть полезно во время презентаций, демо, стриминга и онлайн-совещаний.

Для быстрого вызова этих действий им можно назначить сочетания клавиш. Перейдите в окно Search Actions (Ctrl+Shift+A), введите "zoom ide" и укажите сочетание клавиш после нажатия Alt+Enter.

Возможность сохранять варианты расположения окон

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

Возможность зафиксировать размер окон инструментов

Вы найдете новый флажок Remember size for each tool window в разделе Settings/Preferences | Appearance & Behavior | Tool Windows. Эта опция позволяет зафиксировать ширину боковых окон инструментов или сохранить возможность их менять.

Редактор

Действие Fill Paragraph для Markdown-файлов

Действие Fill Paragraph, которое позволяет разбивать длинные фрагменты текста на несколько строк одинаковой длины, теперь доступно для Markdown-файлов.

Установите курсор внутри абзаца, который нужно отредактировать, и вызовите действие Fill Paragraph через меню Edit или найдите его с помощью Find Action (Ctrl+Shift+A).

Страница настроек Smart Keys для Markdown

В разделе Settings/Preferences | Editor | General | Smart Keys, появилась новая страница с настройками для Markdown.

Так вам будет проще настроить IDE согласно своим предпочтениям, поскольку на этой странице есть отдельные флажки для разных функций редактора (раньше был всего один флажок в разделе Settings/Preferences | Languages & Frameworks).

Отображение знаков пробела только в выделенном коде

Мы добавили новый флажок Selection в разделе Settings/Preferences | Editor | General | Appearance | Show Whitespace. Если его установить, PhpStorm будет отображать пробелы в виде маленьких точек только при выделении кода.

VCS / Git / GitHub

Цветовые подсказки статуса VCS на панели Structure

В окне Structure появились цветовые индикаторы изменений.

Это значит, что теперь вы можете видеть, какие свойства, методы и функции были добавлены или изменены.

Улучшенное окно Branches

Теперь перемещаться между ветками стало проще, поскольку они хранятся в раскрываемых списках.

Автодополнение в окне Create New Branch

В PhpStorm 2023.1 работает автодополнение во всплывающем окне Create New Branch. Как только вы начнете вводить имя новой ветки, IDE предложит подходящие префиксы на основе имен существующих локальных веток.

Фоновые проверки коммитов

Теперь проверки коммитов в Git и Mercurial производятся в фоновом режиме — после коммита, но до отправки изменений в репозиторий. Это ускоряет всю процедуру выполнения коммита.

Улучшенный рабочий процесс код-ревью для GitHub

Наше исследование показало, что в наиболее распространенном сценарии использования пул-реквестов пользователи сначала идут на GitHub, а затем обращаются к IDE в случаях, когда нужно полностью просмотреть код.

Мы упростили этот процесс, переработав окно Pull Request. Теперь в нем есть отдельная вкладка для каждого открытого пул-реквеста. На ней вы сразу увидите список измененных файлов, но теперь там нет ничего лишнего, чтобы вы могли лучше сосредоточиться на текущей задаче.

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

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

Объединение журналов всех контейнеров Docker Compose

Журналы всех контейнеров Docker Compose теперь собраны в одном месте — на вкладке Dashboard в узле Docker-сompose, где они обновляются в реальном времени.

Поддержка реестра контейнеров Azure

Теперь можно легко подключиться к реестру контейнеров Azure. Перейдите в Preferences / Settings | Build, Execution, Deployment | Docker | Docker Registry и выберите опцию Docker V2 в поле Registry.

Новая настройка для применения параметра монтирования :z для привязки томов на SELinux

Теперь у вас есть возможность добавлять флаги конфигурации :z при монтировании каталога с хоста, что позволяет подключать тома к Docker-контейнерам на устройствах SELinux.

Чтобы включить эту функцию, перейдите в раздел Preferences / Settings | Advanced Settings | Docker.

Фронтенд

Поддержка Astro

Long-awaited Astro support has landed in PhpStorm! Она доступна через плагин, который можно установить в разделе Preferences / Settings | Plugins. Плагин обеспечивает базовую функциональность, включая подсветку синтаксиса, автодополнение кода с автоматическими импортами, рефакторинги, навигацию, правильное форматирование и многое другое.

Поддержка TypeScript в Vue-шаблонах

Мы добавили поддержку TypeScript в Vue-шаблоны. Она включится, если установить для атрибута lang в теге script значение ts. Раньше, независимо от атрибута lang в теге script, использовался JavaScript. PhpStorm теперь поддерживает встроенное приведение типов, улучшенное сужение типов и показывает корректную информацию о выведенных типах в быстрой документации для шаблонов однофайловых компонентов Vue.

Конфигурация Tailwind CSS

В этой версии добавлена поддержка параметров конфигурации, в частности, автодополнение имен пользовательских классов в настройке classAttributes, а также поддержка экспериментальных настроек, таких как tailwindCSS.experimental.configFile.

Эти параметры конфигурации можно настроить в разделе Preferences / Settings | Languages & Frameworks | Style Sheets | Tailwind CSS.


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