Поддержка объединенных типов из PHP 8, обновленный механизм анализа потока управления для PHP, рефакторинг Extract Class, полная поддержка пул-реквестов GitHub, виджет инспекций и поддержка OpenAPI.
Мы начинаем представлять функциональность для PHP 8 с поддержки объединенных типов (Union Types). В PHP 8.0 будет возможно объявить более одного типа для свойств, аргументов и возвращаемых значений. PhpStorm уже полностью поддерживает эту возможность и поможет вам эффективно мигрировать на новую версию языка.
Фактически объединенные типы давно используются в PHPDoc, и в новой версии PhpStorm подсвечивает такие случаи.
Теперь их можно преобразовать в нативные объединенные типы при помощи быстрого исправления (Alt+Enter).
Это сработает везде, где применимы объединенные типы: в аргументах, свойствах и возвращаемых значениях. Для свойств PhpStorm также учитывает значения по умолчанию.
Чтобы включить поддержку PHP 8, измените версию языка в IDE одним из этих способов:
composer.json
, и PhpStorm переключится на нее автоматически.PhpStorm анализирует вызовы, вычисляет возможные типы и подсвечивает проблемные фрагменты кода, относящиеся к объединенным типам.
Проверки работают на уровнях свойств, аргументов и возвращаемых значений.
Это помогает быстро обнаружить проблемы в сложных кодовых базах. PhpStorm подсветит места, требующие внимания, прежде чем вы запустите код.
Многие комбинации типов недопустимы или избыточны. Например:
bool|false
Foo|Foo
object|User
iterable|array
и iterable|Traversable
PhpStorm подсвечивает их все.
При наличии единственного типа, допускающего значение null, в PHP 8 разрешается использовать запись ?Type
либо Type|null
.
Но когда таких типов несколько, запись ?Type1|Type2
запрещена как неоднозначная.
PhpStorm подсвечивает такие нарушения и дает возможность их исправить через Alt+Enter.
При наследовании в PHP можно изменять типы, соблюдая следующие правила:
С PhpStorm вам не нужно запоминать эти правила, так как IDE проверяет код и выявляет любые нарушения.
В PHP 8 появится специальный псевдотип false
, который можно использовать только в объявлениях объединенных типов.
Он широко используется в стандартной библиотеке (см., например, strpos()
или array_search()
) и может применяться в других местах для обозначения отрицательного результата.
PhpStorm подсвечивает неправильные использования и учитывает вывод типов.
При добавлении объявления нативного объединенного типа комментарий PHPDoc больше не понадобится, так как в нем нет никакой дополнительной информации.
Удалите его с помощью быстрого исправления Alt+Enter.
PhpStorm теперь анализирует сложные ветви кода и определяет, имеет ли смысл условие в блоке if-else
или оно избыточно.
Как и в случае с условиями, PhpStorm теперь может определить, действительно ли нужны проверки instanceof
или их результат всегда истинный, на основании выведенного типа из иерархии.
С помощью нового действия можно посмотреть выведенный тип для любого выделенного выражения.
Выделите интересующее вас выражение и нажмите Ctrl+Shift+P или перейдите в меню View | Type Info, чтобы узнать его тип.
PhpStorm может определить, когда переменная гарантированно имеет значение null
. В этом случае IDE предложит упростить выражение, чтобы сделать его понятнее.
ruleset.xml
PHP_CodeSniffer есть раздел exclude-pattern
, PhpStorm не будет анализировать файлы по указанному пути. Управлять зависимостями Composer можно прямо в редакторе в файле composer.json.
Если в разделе repositories
указаны пользовательские пакеты, для них будет работать автодополнение.
Кроме того, в редакторе есть значок, показывающий текущее состояние кэширования пользовательских репозиториев.
Если пакет имеет несколько версий, разделенных запятой или знаком ||
, PhpStorm предоставляет автодополнение для всех доступных версий пакета.
Раньше автодополнение отключалось после ввода ~
, ^
или >=
. Теперь оно работает как надо с любым из этих ограничений диапазона в composer.json.
PhpStorm поддерживает интеграцию со множеством внешних инструментов. Теперь, если поддерживаемый инструмент объявлен в composer.json, рядом с ним появится значок гаечного ключа. Нажмите на значок, чтобы напрямую перейти к соответствующему разделу настроек.
Если класс перегружен и берет на себя слишком много, его можно преобразовать и вынести методы и свойства в новый класс с помощью рефакторинга Extract Class.
Выберите функцию, метод или свойство, которые нужно переместить, нажмите Ctrl+T и выберите Extract class.
Рефакторинг создаст новый файл, добавит экземпляр объекта класса в конструктор и автоматически обновит использования.
Для инструментов командной строки PHP появилась поддержка удаленных интерпретаторов.
Добавьте новую запись инструмента в настройках Preferences/Settings | Tools | Command Line Tool Support и выберите один из настроенных удаленных интерпретаторов.
Laravel Artisan теперь обнаруживается автоматически. А значит, открывая проект Laravel, вы можете нажать Ctrl-Ctrl и начать вводить команду. Автодополнение PhpStorm предложит доступные команды.
Если где-то объявлен и обновляется массив, который никогда не читается, с большой вероятностью такой массив необязателен и только утяжеляет код.
Инспекция находит такие случаи и предлагает удалить массив, чтобы сделать код чище.
Если типизированное свойство не имеет значения по умолчанию, оно считается неинициализированным. Чтение неинициализированных свойств приводит к ошибке TypeError
(если не определен магический __get()
).
PhpStorm обнаруживает неинициализированные свойства и подсвечивает код, который пытается их прочитать.
Все действия по работе с пул-реквестами теперь можно выполнять прямо в PhpStorm, не переключаясь в браузер. Вы можете управлять пул-реквестами, просматривать хронологию и комментарии, добавлять комментарии и ревью, а также принимать изменения.
Для начала работы с пул-реквестами откройте окно Pull Requests с панели инструментов или из главного меню VCS | Git | View Pull Requests.
Выберите из списка пул-реквест, чтобы просмотреть всю информацию о нем: сообщение, имя автора, названия веток и и т. д.
Отсюда вы можете начать процесс ревью: проверить измененные файлы и оставить комментарии как к коммитам, так и к отдельным строкам.
Вы также можете выполнить merge пул-реквеста прямо из IDE. Не нужно создавать локальную ветку из пул-реквеста — все работает автоматически.
PhpStorm 2020.2 поддерживает плагин OpenAPI Specifications, разработанный в JetBrains. Этот бесплатный плагин предоставляет функции автодополнения, навигации и валидации для файлов спецификации OpenAPI (openapi.yaml/openapi.json и swagger.yaml/swagger.json).
Возможности плагина:
В верхнем правом углу редактора появился виджет, который сообщает о проблемах в текущем файле.
В новую версию PhpStorm вошли все функции и улучшения из WebStorm 2020.2. Некоторые поддерживаются по умолчанию, другие — через бесплатные плагины, которые можно скачать из Plugin Marketplace.
Форматирование кода с помощью Prettier стало еще удобнее. Просто отметьте галочкой новую опцию On code reformat в настройках, и PhpStorm будет использовать Prettier вместо встроенного форматера. По умолчанию это работает только для файлов .js, .ts, .jsx и .tsx, но вы можете легко добавить другие типы файлов.
В этой версии вас ждет поддержка Nuxt.js, настройки стиля кода для Vue, улучшенная обработка Vue-файлов в TypeScript-проектах и многое другое, что мы реализовали за последний год. Работать с проектами Vue в PhpStorm стало еще удобнее.
Новые intention-действия (Alt+Enter) сэкономят ваше время. Например, можно быстро преобразовать цикл for с числовым индексом в перебирающий метод forEach
. Кроме того, стало проще просматривать документирующие комментарии в файлах JavaScript и TypeScript: мы сделали рендеринг прямо в редакторе — теперь все аккуратнее.
PhpStorm 2020.2 поддерживает Git, установленный в WSL2, для работы над проектами, расположенными в файловых системах Linux или Windows.
IDE переключается между исполняемыми файлами Git в зависимости от расположения проекта. При открытии проекта из WSL2 (по пути \\wsl$
) PhpStorm автоматически переключится на Git в WSL, и вы сможете пользоваться всей функциональностью IDE, связанной с Git.
Если вам нужно сравнить две ветки, чтобы посмотреть, какие коммиты не принадлежат друг другу, PhpStorm 2020.2 покажет список коммитов не в окне Git, а в редакторе: там достаточно места для отображения всей необходимой информации.
Выберите действие Compare with Current во всплывающем меню VCS | Branches.
Теперь можно легко удалить лишние локальные коммиты: выберите их на вкладке Log в окне Git и нажмите Drop Commit в контекстном меню.
Также возможно объединить несколько локальных коммитов в один, например, чтобы очистить историю перед отправкой на сервер.
Выберите коммиты в окне Git нажмите Squash Commits… в контекстном меню.
IDE автоматически выполнит интерактивное перебазирование.
Узнайте, что нового в DataGrip — там вы найдете подробную информацию об улучшениях для работы с базами данных в PhpStorm.
Если в ячейке длинное значение, его удобно просматривать и редактировать в отдельной панели, которая поддерживает режим переноса строк (переключается на правой панели инструментов).
В списке диалектов пополнение: Google BigQuery. Это пока еще не полноценная поддержка базы, а только правильная подсветка кода. Соответственно, для запуска запросов не надо выделять код, IDE сама определит, что нужно запустить.
Прежде чем записать новые значения в редакторе данных, можно посмотреть, какой запрос будет выполнен — нажмите кнопку DML на панели инструментов. Это не именно тот запрос, который запустится, потому что для редактирования данных PhpStorm использует JDBC-драйвер. Но в большинстве случаев, вы увидите то, что реально запустится.