Что нового в PhpStorm 2021.1

PhpStorm 2021.1 — большое обновление, в котором вас ждет более 20 новых инспекций и быстрых исправлений, предварительный просмотр PHP и HTML-файлов, сервис Code With Me для парного программирования и улучшения во всех подсистемах.

PHP

Выбор версии языка в строке состояния

Выбор версии языка в строке состояния

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

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

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

Чтобы упростить поиск и изменение настроек, связанных с PHP, мы переместили этот раздел на верхний уровень: Settings / Preferences | PHP.

Превью PHP и HTML-файлов в редакторе

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

Откройте PHP-файл, введите код, и вы сразу увидите результат рядом — на вкладке предпросмотра. Не нужно переключаться в другое окно. Любые изменения в связанных CSS и JavaScript-файлах также будут отражены в превью.

Превью PHP и HTML-файлов в редакторе

PhpStorm использует локальный интерпретатор PHP, указанный в настройках проекта в разделе Settings/Preferences | PHP. Docker и другие удаленные интерпретаторы не поддерживаются.

Чтобы активировать значок предварительного просмотра, включите хотя бы один браузер в разделе Preferences | Tools | Web Browsers и отметьте галочкой For HTML files.

Вкладку превью также можно открыть с помощью Alt+F2.

Использование префиксов таблиц в SQL-запросах

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

Использование префиксов таблиц в SQL-запросах

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

Теперь префиксы можно указывать через файл .phpstorm.meta.php. Подробнее о метафайлах и о том, как указывать SQL-префиксы, читайте в документации.

Инспекции и быстрые исправления

Логическое выражение можно упростить

Логическое выражение можно упростить

Если логическое выражение содержит литералы true или false, PhpStorm поможет его упростить. Используйте быстрое исправление (Alt+Enter), чтобы удалить лишнее и улучшить читаемость кода.

Строгое сравнение операндов, типы которых несовместимы

Строгое сравнение операндов, типы которых несовместимы

Оператор строгого сравнения === всегда приводит к результату false, если типы операндов не совпадают.

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

PHP 8: замена присваивания в вызове функции именованным аргументом

PHP 8: замена присваивания в вызове функции именованным аргументом

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

Начиная с PHP 8, с помощью Alt+Enter можно заменить присваивание реальным именованным аргументом.

Замена isset оператором объединения с null

Замена isset на оператор объединения с null

Код isset($a) ? $a : $b; идентичен $a ?? $b, поэтому PhpStorm предложит его заменить.

Упрощение блоков if с общим телом

Упрощение блоков if с общим телом

Иногда блоки if и else становятся избыточными после изменений, потому что имеют одинаковое содержимое. PhpStorm предложит извлечь общие части или объединить блоки.

Инверсия инструкции if

Инверсия оператора if

Нажмите Alt-Enter на любом if и выберите в меню Invert `if` statement. PhpStorm заменит условие на противоположное и обновит код соответствующим образом, чтобы сохранить логику. Если вы следуете практике раннего возврата, это действие поможет вам провести рефакторинг кода.

Лишний обратный слэш в операторе use

Лишний обратный слэш в операторе use

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

Переменная foreach переопределяет уже определенные переменные

Переменная foreach переопределяет уже определенные переменные

Переменные для ключа и значения в цикле foreach могут конфликтовать с именами других переменных или параметров. PhpStorm подсвечивает все места, где могут возникнуть ошибки.

Избыточные фигурные скобки для переменных

Избыточные фигурные скобки для переменных

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

Изменение типа параметра на основе значения по умолчанию

Изменение типа параметра на основе значения по умолчанию

Если объявленный тип не соответствует типу значения, его можно быстро обновить с помощью Alt+Enter. А если вы пишете на PHP 8, IDE предложит использовать объединенный тип.

Замена `isset` на `!== null`

Замена `isset` на `!== null`

Использование функции isset() эффективно только для массивов и переменных. В остальных случаях стоит проверить, не является ли операнд null. Используйте Alt+Enter, чтобы заменить проверки isset() проверками на null.

Подсветка небезопасных ссылок http://

PhpStorm подсвечивает случаи использования протокола http:// и предлагает быстрое исправление (Alt-Enter), чтобы заменить их на https://. Вы можете легко указать, какие URL-адреса следует игнорировать.

Подозрительное сочетание имен

Подозрительное сочетание имен

PhpStorm подсвечивает некоторые распространенные случаи некорректного использования имен параметров и возвращаемых значений, например $needle и $haystack или $x и $y. Такие случаи могут привести к ошибкам и как минимум запутают того, кто читает код.

Настройка инспекций перед коммитом

Настройка инспекций перед коммитом

Теперь легко выбрать профиль инспекций перед отправкой изменений в VCS. Нажмите на значок шестеренки, отметьте галочкой Analyze code, кликните Configure и выберите нужный профиль. Чтобы создать профиль, перейдите в раздел Preferences/Settings | Editor | Inspections.

Другие возможности

Синтетическая область видимости для удобства рефакторинга

Синтетическая область видимости для удобства рефакторинга

В PHP циклические конструкции, такие как блоки foreach, for, while и catch, не имеют изолированной области видимости. Это неудобно, если требуется переименовать переменную только внутри блока.

Мы ввели синтетическую область видимости для таких блоков, и рефакторинг Rename (Shift+F6) стал более интуитивным.

Автоматические языковые вставки

Автоматические языковые вставки

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

Например, если переменная используется в функции preg_*, PhpStorm понимает, что это шаблон, и подсвечивает RegExp.

Расширения в блоке `suggest` в composer.json

Расширения в блоке `suggest` в composer.json

PhpStorm теперь учитывает расширения в как в блоках require, так и suggest.

IDE предупредит о том, что расширение зарегистрировано в composer.json как предлагаемое, но используется без проверок, таких как extension_loaded() и function_exists(). Чтобы переместить расширения в require/require-dev, воспользуйтесь быстрым исправлением.

Важные исправления

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

  • Проекты WSL 2 теперь можно отлаживать в Docker.
  • Инструменты проверки качества кода теперь корректно обрабатывают пути при работе с docker-compose в режиме exec.
  • IDE корректно обрабатывает файлы объемом более 5000 строк.
  • Мы значительно улучшили производительность в проектах со множеством псевдонимов.

Code With Me

Совместная разработка с помощью Code With Me

PhpStorm поддерживает Code With Me — инструмент JetBrains для совместной удаленной разработки и парного программирования. Мы впервые представили его в версии 2020.3, а в этом релизе вас ждет несколько важных улучшений.

Настройте уровни доступа к проекту и отправьте коллегам ссылку-приглашение. Чтобы присоединиться к сеансу и работать вместе с вами, им даже не обязательно иметь IDE. Code With Me позволяет переписываться в чате и поддерживает аудио- и видеозвонки.

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

HTTP-клиент

Поддержка SSL

Поддержка SSL

В HTTP-клиенте можно настроить SSL: нажмите Add environment file и выберите Private. IDE автоматически создаст файл, в который вы сможете добавить SSL-конфигурации: clientCertificate, hasCertificatePassphrase, clientCertificateKey, verifyHostCertificate`.

Улучшения пользовательского интерфейса

Улучшения в интерфейсе

Мы добавили новый значок для выбора способа отображения тела. Можно переключаться между режимами Text / JSON / HTML / XML, включить отображение номеров строк и быстро скопировать тело ответа в буфер обмена, нажав на кнопку.

Улучшения IDE

Раскрытие вкладок в режиме Split

Раскрытие вкладок в режиме Split

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

Поддержка JSONPath

Поддержка JSONPath

Используйте язык запросов JSONPath для поиска по JSON-документам. Новые действия вы найдете в разделе Edit | Find | Evaluate JSONPath.

Поддержка формата JSON Lines

Поддержка формата JSON Lines

PhpStorm now supports the newline-delimited JSON Lines format used for working with structured data and logs. IDE распознает типы файлов .jsonl, .jslines, .ldjson и .ndjson.

Настройки типографики

Настройки типографики

Теперь можно отрегулировать толщину шрифта и настроить резервный шрифт. Новые параметры находятся в разделе Typography Settings в меню Settings / Preferences | Editor | Fonts.

Поддержка веб-технологий

В новую версию PhpStorm вошли все функции и улучшения из WebStorm 2021.1. Некоторые поддерживаются по умолчанию, другие — через бесплатные плагины из Plugin Marketplace.

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

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

Исправлять ошибки в CSS-коде теперь можно всего в несколько кликов. Наведите указатель мыши на проблемное место в файле или поместите туда курсор и нажмите Alt+Enter, а затем выберите Stylelint: Fix current file.

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

Проверка специфичности селекторов

Проверка специфичности селекторов

When working with style sheets, you can now check the specificity of your selectors – just hover over a selector that you want to check. Или переместите на него фокус и нажмите F1/Ctrl+Q, чтобы просмотреть информацию во всплывающем окне документации.

Удобная работа с пул-реквестами GitHub

Чтобы создать пул-реквест просто нажмите на значок плюса или перейдите в ‎Git | GitHub | Create Pull Request.

Удобная работа с пул-реквестами GitHub

В новом диалоге можно:

  • Выбирать базовые и head-ветки из списка доступных веток.
  • Просматривать измененные файлы на вкладке Files.
  • Редактировать названия и описания пул-реквестов, назначать ревьюеров и исполнителей, добавлять метки.
  • Создавать черновики пул-реквестов.

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

Узнайте, что нового в DataGrip 2021.1 — вся эта функциональность также доступна в PhpStorm. Вот лишь некоторые из обновлений.

Интерфейс для работы с правами доступа

Интерфейс для редактирования прав доступа

В окне Modify user (открывается из проводника баз данных для любого пользователя при помощи Cmd/Ctrl+F6) можно назначать объектам права доступа.

Функциональность доступна для PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server и Sybase.

Контекстные шаблоны Live Templates

Контекстные шаблоны Live Templates

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

Узнайте, как создавать свои шаблоны Live Templates.