Крупное обновление PhpStorm 2020.3 вводит поддержку PHP 8, PHPStan, Psalm, Tailwind CSS, Xdebug 3 и инструмента для совместной разработки Code With Me.
PHP 8.0 — крупное обновление языка с множеством новых полезных возможностей. PhpStorm поможет проверить ваш код на совместимость, быстрее обновить кодовую базу и воспользоваться новейшими улучшениями языка.
Теперь вы всегда будете видеть, какая версия PHP используется в проекте. Мы разместили соответствующий индикатор в строке состояния. Здесь вы также можете поменять версию PHP (если в composer.json
не прописаны ограничения для версии языка).
Теперь аргументы для функций и методов в PHP 8 можно передать, указав имя параметра. Таким образом вам не нужно задавать опциональные параметры. Кроме того, это обеспечивает самодокументацию вызовов.
PhpStorm поможет:
Эта функциональность позволяет избежать дублирования кода при инициализации переменных через конструктор.
В PhpStorm вы можете преобразовывать свойства, инициализированные конструктором, в promoted-свойства (и наоборот) с помощью быстрого исправления Convert to promoted property Alt+Enter.
Вместо громоздких условий с проверками на null используйте новый оператор ?->
, позволяющий создавать цепочки вызовов со скрытыми проверками каждого элемента на null.
PhpStorm проследит, чтобы вы верно использовали оператор.
Новое выражение match
является типобезопасной и компактной альтернативой оператору switch
. Вы можете использовать match
как значение — возвращая его или присваивая переменной.
PhpStorm сам определит, можно ли преобразовать блок switch
в выражение match
, и вы сможете автоматически сделать это при помощи быстрого исправления Alt+Enter.
PhpStorm проследит, чтобы вы правильно использовали новое выражение, и всегда подсветит ошибки.
В PHP 8 вы можете использовать функцию str_contains()
, чтобы определить, является ли строка частью другой строки. PhpStorm 2020.3 укажет вам на все случаи использования strpos()
, которые могут быть заменены на str_contains()
.
Также PhpStorm подсветит вызовы substr()
, которые можно заменить на новые более понятные функции str_starts_with()
и str_ends_with()
.
use
замыканий. ??
и в тернарном операторе ?:
). get_class($object)
используйте $object::class
. Быстро применить это исправление можно с помощью Alt+Enter. Вместо использования аннотаций PHPDoc вы теперь можете указывать метаданные в структурированном виде при помощи атрибутов.
Для работы с атрибутами PhpStorm предоставляет подсветку, автодополнение, поиск использований, рефакторинги и другие помощники. Также есть инспекции, которые проверят правильное объявление и использование атрибутов.
Несколько атрибутов PHP 8 доступны прямо в IDE. We also provide them in a composer package jetbrains/phpstorm-attributes, so feel free to add it as a dependency in composer.json
.
Атрибут аналогичен тегу PHPDoc @deprecated
. При помощи него вы можете помечать методы, функции, классы и константы классов, которые планируете убрать в будущих версиях приложения.
Указывайте reason
и replacement
, чтобы ваши пользователи понимали, зачем нужно обновление. Позвольте им обновлять конструкции автоматически — при помощи быстрого исправления Alt+Enter.
Используйте этот атрибут, чтобы задать ключи и типы значений для массивов по типу объектов. Это позволит PhpStorm лучше выполнять анализ и помогать вам в написании кода.
Обратите внимание: чтобы обеспечить совместимость с PHP 7.4 и более ранними версиями, просто запишите все это на одной строке.
Если вы хотите запретить изменение значений объектов или свойств после инициализации, отмечайте их атрибутом #[Immutable]
.
Это сделает состояние программы более предсказуемым и упростит отладку.
Вы можете настроить ограничения для изменения свойства в зависимости от области доступа, передав атрибуту одну из следующих констант: CONSTRUCTOR_WRITE_SCOPE
, PRIVATE_WRITE_SCOPE
, PROTECTED_WRITE_SCOPE
.
Обратите внимание: чтобы обеспечить совместимость с PHP 7.4 и более ранними версиями, просто запишите все это на одной строке.
Отмечайте функции, не имеющие побочных эффектов, атрибутом #[Pure]
— это поможет PhpStorm анализировать поток выполнения. IDE сама подсветит лишние вызовы чистых функций.
Если вы отметите функцию атрибутом #[Pure]
, хотя на самом деле она пытается изменить что-то во внешней области, PhpStorm подсветит код как небезопасный.
Встроенные функции PHP, такие как array_merge()
, уже размечены PhpStorm.
Используйте этот атрибут, чтобы указать, какие значения функция принимает в качестве параметров и какие возвращает. Это улучшит возможности автодополнения и поможет отследить возможные ошибки.
#[ExpectedValues]
— это продвинутая версия expectedArguments()
из .phpstorm.meta.php
.
Отмечайте функции, которые могут завершить выполнение скрипта, атрибутом #[NoReturn]
. Это позволит IDE более точно анализировать поток управления.
PhpStorm предложит при помощи быстрого исправления применить атрибут ко всей нижестоящей иерархии, что обеспечит еще более точный анализ.
Добавляйте этот атрибут к строковым параметрам, содержащим текст на другом языке (RegExp, SQL и др.), и PhpStorm откроет вам некоторые дополнительные возможности.
Оба статических анализатора являются первоклассными инструментами для подсветки проблем прямо в редакторе кода и поддерживаются в PhpStorm 2020.3. Добавьте их в качестве dev-dependencies в composer.json
и включите соответствующую инспекцию, нажав на иконку гаечного ключа рядом с инструментом.
PhpStorm также обеспечивает автодополнение для тегов @psalm-*
. Он понимает их специальное назначение, поэтому у вас не будет проблем с подсветкой, неопределенными классами и т. д. В большинстве случаев вы можете спокойно убрать из тегов префикс @psalm-
. То есть вместо @psalm-return
можно использовать @return
, а вместо @psalm-param
— @param
.
PhpStorm 2020.3 поддерживает различные psalm-типы, в том числе скалярные, числовые и типы с константами. Поэтому все, что зависит от вывода типов (инспекции, генерация кода и автодополнение), теперь работает еще точнее.
Xdebug 3 — это обновленный дебаггер PHP. Он работает намного быстрее, и его проще конфигурировать.
Чтобы настроить Xdebug 3, вам всего лишь нужно указать XDEBUG_MODE=debug
.
Новый стандартный порт для Xdebug — 9003 (вместо 9000), однако PhpStorm по умолчанию слушает оба порта, чтобы переход был более мягким. Порт и другие настройки Xdebug можно изменить в Preferences/Settings | Languages & Frameworks | PHP | Debug.
Learn more about Xdebug 3 in the Upgrade Guide.
PhpStorm 2020.3 поддерживает Code With Me — наш новый сервис для совместной разработки и парного программирования. С помощью него вы и ваша команда можете вместе работать над проектами прямо из своих IDE.
PhpStorm 2020.3 поможет вам эффективнее работать с Tailwind CSS.
IDE предложит автодополнение для классов Tailwind, покажет ожидаемый CSS при наведении указателя мыши на код, а также поможет в работе с пользовательскими настройками файлов tailwind.config.js
.
Guzzle is one of the most popular HTTP clients for PHP. В новой версии PhpStorm вы можете тестировать Guzzle-запросы, не запуская сам код.
Если запрос не поддерживается, на полях редактора появится специальная иконка. Нажмите на нее, и IDE создаст новый вспомогательный файл HTTP
с предзаполненными параметрами.
Вы можете поэкспериментировать с запросом и затем сохранить его в проекте как файл .http
.
Чтобы преобразовать HTTP-запрос в строку для cURL, нажмите Alt+Enter в редакторе HTTP-запросов и выберите опцию Convert to cURL and copy to clipboard.
Вы можете запускать полученную строку через терминал, используя любой HTTP-клиент.
Диаграммы Mermaid.js и графики теперь отрисовываются внутри IDE. Включить эту функцию можно в Preferences/Settings | Languages & Frameworks | Markdown.
В правом верхнем углу панели предпросмотра есть кнопка Auto-Scroll Preview — с помощью нее вы можете включать и выключать синхронизацию прокрутки с редактором.
Мы добавили множество популярных пресетов для Markdown, которые применяются при переформатировании кода с помощью Ctrl+Alt+L. Настройки находятся в Preferences/Settings | Editor | Code Style | Markdown.
Движок для проверки грамматики теперь поддерживает больше языков и обеспечивает более высокое качество проверки.
PhpStorm подсветит ошибку, и вы увидите всплывающее окно с объяснением и вариантом исправления.
Наведя указатель мыши на подсвеченный текст и нажав Alt+Enter, вы сразу увидите все предложенные варианты (мы убрали вложенные списки).
Организовать расположение вкладок теперь можно, перетаскивая каждую из них в нужную часть экрана.
Также, чтобы открыть новую вкладку в сплит-режиме, вы можете выбрать нужный файл в окне Project (или любом другом окне поиска) и нажать Shift+Enter.
Теперь вы можете просматривать файлы перед открытием в специальной вкладке предпросмотра. Чтобы включить эту функцию, нажмите на значок шестеренки на панели Project и отметьте галочками опции Enable Preview Tab и Open Files with Single Click. Если вы начнете редактировать просматриваемый файл, вкладка превратится в обычную.
Теперь представление результатов во всплывающем окне Search Everywhere (Shift+Shift) организовано немного иначе: результаты группируются не по типу (как было раньше), а по релевантности поисковому запросу.
Теперь Search Everywhere также позволяет выполнять простые арифметические операции. Вы можете ввести математическое выражение и сразу получить результаты вычисления. Так вам не придется отвлекаться на использование калькулятора.
Search Everywhere также позволяет искать в истории Git информацию о ветках и коммитах.
В новую версию PhpStorm вошли все функции и улучшения из WebStorm 2020.3. Некоторые поддерживаются по умолчанию, другие — через бесплатные плагины из Plugin Marketplace.
Мы интегрировали языковую службу TypeScript в окно Problems и убрали окно TypeScript. Это значит, что вы можете просматривать все ошибки в одном месте. Действия, которые раньше были доступны в окне TypeScript, теперь можно найти в отдельном виджете строки состояния.
Если у вас есть нереализованная React-компонента, просто поставьте на нее курсор, нажмите Alt+Enter и выберите опцию Create class/ function component — IDE создаст необходимую конструкцию кода за вас.
В PhpStorm 2020.3 появилась поддержка Git-стейджинга. Чтобы включить ее, зайдите в Preferences/Settings | Version Control | Git и поставьте галочку напротив Enable staging area.
Вы можете возвращаться в окно Commit при помощи Alt+0 и видеть, какие файлы были добавлены, а какие нет.
Добавить файлы на стейджинг можно, нажав на иконку +.
Также можно добавлять на стейджинг лишь некоторые строки файлов: просто нажмите на иконку на полях редактора рядом с нужными изменениями.
Узнайте, что нового в DataGrip 2020.3, — вся эта функциональность также доступна в PhpStorm.
Теперь можно использовать SQL для запросов к MongoDB. PhpStorm 2020.3 supports SELECT
queries with clauses such as JOIN
, WHERE
, GROUP BY
, HAVING
, ORDER BY
, LIMIT
, OFFSET
, and all available MongoDB functions except map, reduce, filter, and let. Подробнее об SQL для MongoDB читайте в нашем блоге.
PhpStorm 2020.3 поддерживает сервис Couchbase Query. Также мы добавили два новых формата экспорта: One-Row скопирует выделенные значения в одну строку через запятую, а SQL-Insert-Multirow сгенерирует один INSERT
для нескольких строк.