Что нового в PhpStorm 2024.3

Главные новинки этой версии:

  • Поддержка PHP 8.4
  • Улучшенный AI Assistant
  • Поддержка xdebug_notify()
  • Интерпретатор PHP из Laravel Herd

Поддержка PHP 8.4

В PhpStorm 2024.3 добавлены инспекции и быстрые исправления, упрощающие переход на PHP 8.4, где появилось много новых возможностей. Ниже мы расскажем, как эти возможности поддерживаются в PhpStorm.

Хуки свойств

Одно из важнейших изменений в PHP за последнее время — хуки свойств: вы можете использовать для свойств хуки get и set и отказаться от шаблонных геттеров и сеттеров.

Возможности, которые PhpStorm предлагает для хуков свойств (в том числе в promoted-свойствах):

  • быстрое исправление для замены геттеров и сеттеров на хуки get и set;
  • intention-действие для добавления хуков к свойствам;
  • автодополнение кода для ключевых слов get и set, позволяющее вставить тело хука свойства;
  • создание хуков get и set для свойства через Generate action — работает так же, как Generate | Getters and Setters;
  • автоматическое выявление хуков свойств, которые можно преобразовать в короткую нотацию, и быстрое исправление для преобразования;
  • проверки, обеспечивающие правильный синтаксис и логику хуков свойств.

Асимметричная видимость

Теперь вы можете отдельно определить видимость типизированного свойства для операций чтения и записи.

PhpStorm 2024.3 позволяет правильно реализовать асимметричные области видимости с помощью специальных проверок и быстрых исправлений для следующих случаев:

  • избыточные модификаторы асимметричной видимости;
  • попытки расширить видимость свойства set за пределы основной видимости (get);
  • избыточные модификаторы final для свойств private (set);
  • попытки сузить видимость наследуемых свойств;
  • попытки асимметрично изменить видимость свойства за пределами области видимости set.

Новые функции массивов

Версию PhpStorm 2024.3 можно использовать, чтобы преобразовать циклы foreach в недавно добавленные функции PHP 8.4 array_find(), array_find_key(), array_any() и array_all().

new без скобок

В PhpStorm 2024.3 можно опускать скобки вокруг выражения new в конструкциях типа (new MyClass())->method().

AI Assistant  Плагин

Обратите внимание, что функции AI Assistant доступны только с подпиской AI Pro или во время пробного периода.

Новая модель JetBrains для автодополнения кода PHP

Автодополнение PHP-кода с использованием ИИ стало точнее и быстрее. В основе улучшений лежит Mellum — новая большая языковая модель (LLM) от JetBrains. Она работает в облаке, лучше понимает контекст и быстрее предлагает наиболее подходящие варианты.

Подробнее о новой LLM JetBrains читайте в нашем блоге.

Подсветка синтаксиса для предлагаемого кода

Предложения для автодополнения кода теперь отображаются с подсветкой синтаксиса, так что пользователю легче их понять.

Пошаговое принятие предлагаемых вариантов кода

Когда ИИ предлагает сразу несколько строк кода, их можно принять либо разом, нажав Tab, либо по одному слову (Ctrl+→) или построчно (End).

Встроенные обращения к ИИ

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

Напротив строк, измененных AI Assistant, PhpStorm оставляет на полях фиолетовую метку, чтобы вы сразу видели, что было обновлено. Если предложенный вариант вам не нравится, можно уточнить первоначальный запрос, нажав на фиолетовую метку или сочетание клавиш Ctrl+/.

Улучшенное управление контекстом

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

Генерация заголовков и описаний для pull- и merge-реквестов

AI Assistant теперь помогает создавать понятные и лаконичные заголовки и описания для pull- и merge-реквестов прямо в IDE, делая этот процесс быстрее и удобнее.

Обработка ошибок SQL с помощью AI Assistant

В области сообщений об ошибках появилась пара новых удобных действий для обработки ошибок, возникших при выполнении запросов SQL, с помощью AI Assistant. Explain with AI открывает чат с ИИ, автоматически отправляет запрос и показывает объяснение ошибки, составленное AI Assistant. Действие Fix with AI генерирует в редакторе исправление, устраняющее ошибку выполнения запроса.

Подробнее обо всех обновлениях JetBrains AI Assistant.

Отладка

Поддержка xdebug_notify()

Чтобы сделать отладку PHP еще более удобной, PhpStorm теперь предлагает структурированный способ обработки вывода, отправляемого функцией xdebug_notify().

Вызовы xdebug_notify() появились в Xdebug 3.1 и позволяют выборочно отправлять переменные в консоль отладки в PhpStorm.

Экосистема Laravel

Использование интерпретатора PHP из Laravel Herd в PhpStorm

PhpStorm 2024.3 автоматически определяет путь к исполняемому файлу PHP на вашем компьютере, который используется Laravel Herd. Чтобы использовать этот интерпретатор в PhpStorm, откройте настройки интерпретатора командной строки (PHP | CLI interpreter | ) и в диалоге CLI Interpreters выберите нужный исполняемый файл PHP из списка предварительно настроенных вариантов.

Улучшенная поддержка Pest

PhpStorm 2024.3 существенно упрощает Laravel-разработчикам работу с фреймворком тестирования Pest. Мы обеспечили полную поддержку Pest 3.0 и возможность запускать параллельное и мутационное тестирование с помощью Pest прямо из IDE.

Мутационное тестирование с помощью Pest 3.0

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

Параметр Pest Run Tests (Pest) with Mutation можно включить через PhpStorm 2024.3, как и любые другие параметры тестирования: прямо из редактора, в окне Project или через конфигурацию запуска и отладки. Посмотреть результаты тестирования можно в отдельном окне Pest Mutation.

Обязательно убедитесь, что в интерпретаторе PHP, который используется в вашей IDE, установлен также Xdebug 3.0+.

Подробнее читайте в документации по PhpStorm.

Параллельное тестирование с помощью Pest

В PhpStorm 2024.3 больше не нужно переключаться на терминал, чтобы запустить тесты Pest в параллельном режиме. Просто перейдите к тестовому файлу и выберите Run Tests (Pest) in Parallel через иконку на полях редактора, в контекстном меню в окне Project или через конфигурацию запуска и отладки.

Системы контроля версий

Разрешение конфликтов слияния в инструкциях import

Новая версия PhpStorm может автоматически разрешать конфликты слияния в инструкциях import. Чтобы включить эту функцию, нажмите на иконку шестеренки и в диалоге слияния выберите параметр Resolve conflicts in import statements или откройте меню Settings | Tools | Diff & Merge и выберите Automatically resolve conflicts in import statements.

Обновленный поиск по файлам

Теперь у функции Find in Files есть новый режим — Project Files Excluding Git-Ignored. Из поиска исключаются файлы, указанные в .gitignore, помогая вам сосредоточиться только на нужном коде.

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

Вы можете управлять фоновыми проверками в процессе коммита с помощью новой опции Run advanced checks after a commit is done в разделе Settings | Version Control | Commit. Она позволяет запускать тесты и инспекции после коммита. Если вы хотите, чтобы проверки завершались до коммита, просто отключите эту опцию.

Название ветки на начальном экране

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

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

Частичная интроспекция и умное обновление для MySQL и MariaDB

Новая версия PhpStorm поддерживает частичную интроспекцию. Раньше всегда выполнялась полная интроспекция схем в MySQL и MariaDB, а обновить метаданные отдельного объекта было нельзя. Каждый раз, когда в консоли выполнялся DDL-оператор, который мог бы изменить объект в схеме базы данных, IDE начинала полную интроспекцию всей схемы. Это занимало много времени и часто мешало нормальной работе.

Теперь PhpStorm анализирует DDL-запрос, определяет, какие объекты могли быть затронуты, и обновляет только их. Если в проводнике баз данных выбрать один объект и вызвать действие Refresh, будет обновлен только этот объект, а не вся схема, как раньше.

Проверка на избыточность операторов JOIN

В некоторых случаях выполнение запроса с чрезмерным количеством операторов JOIN снижает производительность. Теперь редактор умеет выявлять и подсвечивать такие запросы. Чтобы включить эту инспекцию, перейдите в настройки IDE: откройте Editor | Inspections, разверните раздел SQL и выберите Excessive JOIN count.

Плавающая панель для разделения на страницы

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

Фронтэнд

Поиск по проекту без лишних файлов

Теперь PhpStorm по умолчанию исключает папку node_modules из поиска по файлам в директориях проекта, убирая лишние файлы из выдачи. Если вы хотите вернуть прежнее поведение, включите опцию Search in library files when “Directory” is selected in Find in Files в разделе Settings | Advanced Settings.

Переименование компонентов фреймворков и навигация по ним

Мы улучшили подсказки для компонентов Vue, Svelte и Astro в редакторе. Действие Show component usages теперь находит использования как в импортированных файлах, так и в шаблонах разметки. Мы также добавили фильтр Show Component Usages, который позволяет исключать упоминания компонента при поиске обычных ссылок на файлы. Кроме того, в рефакторинг Rename добавлена опция, которая позволяет автоматически обновлять все упоминания компонента при переименовании его файла.

Превью цвета для классов Tailwind CSS

Теперь в редакторе отображается превью цвета для классов Tailwind CSS — так их проще различать. Мы добавили поддержку метода textDocument/documentColor из протокола языкового сервиса (LSP), поэтому теперь все плагины на базе LSP автоматически поддерживают эту функцию.

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

В проектах на Angular 19 теперь по умолчанию используется автономный режим для компонентов, директив и пайпов. Добавлены быстрые действия для преобразования автономных компонентов в обычные и наоборот. Неиспользуемые автономные импорты можно автоматически удалять при форматировании кода или с помощью новой инспекции. Кроме того, улучшена поддержка синтаксиса @let.

Интерфейс

Подсветка всех вхождений выделенного текста

Теперь PhpStorm по умолчанию подсвечивает все вхождения выделенного текста в файле. Так сразу хорошо видно, где в коде встречается выбранный текст. Изменить настройку можно в разделе Settings | Editor |General | Appearance.