PhpStorm 2021.3 — последнее в этом году крупное обновление, в котором реализована поддержка недавно вышедшей версии PHP 8.1, усовершенствована обработка дженериков в PHP, обновлен HTTP-клиент, появились новые возможности развертывания и управления версиями.
Выпущена новая версия интерпретатора. Смотрите видеообзор новых возможностей языка, подготовленный Брентом Рузом и участниками PHP-сообщества.
Перечисления — одна из самых долгожданных возможностей PHP 8.1.
Поддержка перечислений появилась уже в PhpStorm 2021.2: IDE предлагает варианты автодополнения, а валидация защищает от их неправильного использования.
Перечисление в PHP содержит набор случаев, может иметь методы и использоваться как подсказка типа. Во всех этих случаях PhpStorm обеспечивает подсветку ошибок и предлагает нужные варианты, позволяя экономить время.
Readonly properties are the properties that cannot be changed after initialization, that is, after a value is assigned to them.
PhpStorm 2021.3 поможет правильно использовать такие свойства.
Специальная инспекция проверит, инициализировано ли свойство только для чтения в том диапазоне, в котором оно было объявлено, будь то в объявлении самого свойства или в методе класса.
Поскольку свойства только для чтения должны быть обязательно типизированы, PhpStorm проверит, указано ли объявление типа.
Свойство только для чтения не может иметь значения по умолчанию, но его можно инициализировать в конструкторе как promoted-свойство, и в PhpStorm есть для этого быстрое исправление.
В PHP 8.1 можно использовать оператор new при инициализации значений параметров по умолчанию, статических переменных, глобальных констант и аргументов атрибутов.
PhpStorm проверяет такие использования и подсвечивает недопустимые случаи, например предоставление нового объекта как свойства или константы класса.
В PHP 8.1 можно получить ссылку на любую функцию, используя упрощенный синтаксис callable-ссылок. Теперь не нужно писать $fn = Closure::fromCallable('strlen');
, а можно использовать более короткую форму $fn = strlen(...);
. При нажатии Alt+Enter PhpStorm выполнит быстрое исправление и преобразует код в новый синтаксис.
В PHP 8.1 появились типы пересечений, значение которых должно удовлетворять ограничениям нескольких типов, а не одного.
Теперь PhpStorm предлагает автодополнение для этих конструкций и проверяет, не комбинируется ли тип пересечения с типом объединения. Если тип пересечения указан как аннотация PHPDoc, PhpStorm тоже правильно его интерпретирует.
В PHP 8.1 появился тип never
для возвращаемых значений. Если функция объявлена с типом never
, она не вернет значение и либо выдаст исключение, либо завершит выполнение скрипта, как это делают функции die()
, exit()
или trigger_error()
.
В PHP 8.1 можно объявить константы класса final
так, что их нельзя переопределить в дочерних классах. PhpStorm проверяет такие случаи.
В PHP 8.1 не только появились новые возможности, но и прекращена поддержка некоторых старых. Это сделано, чтобы язык был более последовательным, и с ним было проще работать. PhpStorm поможет найти устаревший код. Вот два примера:
Вместо интерфейсов Serializable
рекомендуется использовать magic-методы __serialize()
и __unserialize()
. В PHP 8.1 интерфейсы Serializable
еще можно использовать, но только если реализующий их класс использует и __serialize()
, и __unserialize()
. PhpStorm 2021.3 подсвечивает неверный код и предлагает быстрое исправление через Alt+Enter, добавляющее magic-методы.
Использование суперглобальной переменной $GLOBALS
в PHP 8.1 ограничено: запрещается выполнять операции записи или чтения/записи над самой переменной $GLOBALS
. PhpStorm подсвечивает неверные использования.
PHP пока не поддерживает дженерики на уровне языка, но они уже очень широко используются с помощью аннотаций. Их применение делает код более безопасным и предсказуемым при работе с коллекциями, контейнерами, фабриками и другими приложениями. В PhpStorm 2021.3 добавлена поддержка дженериков с помощью аннотации @template
.
В PhpStorm появилась поддержка интерфейса IteratorAggregate
, и теперь итерация по коллекциям Doctrine работает автоматически.
In the upcoming Laravel release, the illuminate/collections package will support generics annotations. PhpStorm 2021.3 обеспечивает более качественное автодополнение кода для таких коллекций.
Если в конструкторе есть параметр дженерика @template
и вы хотите указать тип, передав объект как аргумент, новая версия PhpStorm выведет правильный тип и предоставит автодополнение.
Раньше переместить класс и обновить его пространство имен можно было только с помощью рефакторинга перемещения (F6) в редакторе кода. В PhpStorm 2021.3 можно просто перетащить класс в нужное место на панели Project. В процессе вам будет видна структура проекта. Более того, таким способом можно перетащить несколько классов и даже целые папки, и PhpStorm правильно обновит все ссылки.
Рефакторинг Inline method позволяет заменить вызовы метода его содержимым, а сам метод удалить. В PhpStorm 2021.3 этот рефакторинг значительно улучшен и может использоваться в большем числе случаев. Например, добавлена поддержка нестатических методов, цепочек методов и стрелочных/анонимных функций, переданных как параметры.
Чтобы использовать этот рефакторинг, поместите курсор на метод и нажмите Ctrl+Alt+N. Если какой-то закрытый метод используется в коде только один раз, нажмите Alt+Enter и примените новое быстрое исправление Inline Method.
Рефакторинг Inline variable позволяет заменить ссылки на переменную фактическим значением переменной. В PhpStorm 2021.3 этот рефакторинг поддерживает встраивание переменных NOWDOC/HEREDOC
, и пользоваться им стало удобнее.
Кроме того, PhpStorm теперь находит переменные, использованные только один раз, и предлагает для них быстрое исправление Inline Variable. Чтобы применить его, нажмите Alt+Enter.
Используя для развертывания SFTP-сервер, можно включить rsync для скачивания и загрузки файлов и папок. Это позволяет значительно увеличить скорость передачи данных. Соответствующий параметр Use rsync for download/upload находится в разделе Advanced настроек сервера развертывания.
Путь к исполняемому файлу rsync
можно задать в меню Settings/Preferences | Tools | Rsync. В macOS и Linux он будет доступен сразу. For Windows, it is recommended to use Cygwin and OpenSSH.
PhpStorm 2021.3 позволяет повторно передать файлы, которые не удалось загрузить. В таких случаях нужно нажать ссылку Retry в окне File Transfer.
Теперь вы можете указать для конфигурации SSH прокси-сервер HTTP или SOCKS. Для этого перейдите в Settings/Preferences | Tools | SSH Configurations.
Кроме того, можно использовать глобальный прокси-сервер, единый для всей IDE. Для этого поставьте флажок Use global IDE proxy settings и введите данные прокси-сервера в Settings/Preferences | Appearance & Behavior | System Settings | HTTP Proxy.
В PhpStorm 2021.3 появился новый виджет строки состояния, который показывает текущий сервер по умолчанию. Если вам приходится работать с несколькими окружениями, переключаться между ними можно прямо в этом виджете, не заходя в настройки.
Новая версия HTTP-клиента поддерживает ответы в виде двоичного кода. Если пришел ответ в виде изображения, в консоли ответа появится превью.
В новой версии в HTTP-клиенте можно настроить перенаправление вывода в заданный файл или директорию. Для принудительного и мягкого перенаправления используются два оператора:
>>
всегда создает новый файл, добавляя к его имени суффикс -n
, если такой файл уже существует; >>!
перезаписывает файл, если он уже существует. Помимо явных путей к файлам, теперь можно использовать новые предопределенные переменные: {{$projectRoot}}
указывает на корневую папку проекта, а {{$historyFolder}}
на папку истории запросов.
В PhpStorm 2021.3 HTTP-запросам можно присваивать имена. Идентификаторы можно добавлять либо в виде комментариев с использованием @name
, либо в виде текста в разделителе запросов (###).
В дальнейшем имена можно использовать для вызова запросов из окна Services, а также из диалогов Run Configuration, Run Anything и Search Everywhere.
Мы объединили функциональность Favorites и Bookmarks. Теперь Bookmarks служит единым окном, в котором отображаются все закладки. Чтобы добавить в закладки строку, файл или папку, нажмите F11.
В диалоге Show Usages, который можно вызвать нажатием Ctrl+щелчок по символу, теперь доступен предпросмотр исходного кода для найденных использований. Чтобы посмотреть превью, нажмите кнопку на панели инструментов.
Мы добавили в настройки экрана Diff новый параметр Align Changes Highlighting. Чтобы перейти к настройкам, нажмите значок шестеренки. Эта настройка упрощает чтение информации на экране Diff, особенно при сложных изменениях: она выравнивает строки без изменений, чтобы они отображались друг рядом с другом. В результате вы четко видите, какой код был добавлен или удален.
Функция Checkout and Rebase onto Current позволяет извлечь выбранную ветку и переместить ее на вершину ветки, в которой вы находитесь. Раньше это действие можно было использовать только локально, а теперь оно работает и для удаленных веток.
Бывает, что несколько коммитов готовы к отправке, а над другими вы еще работаете. В таких случаях удобно передать на сервер только те, работа над которыми завершена. PhpStorm 2021.3 позволяет отправить в удаленный репозиторий все коммиты вплоть до коммита, выбранного во вкладке Log окна Git. Выберите нужный коммит, щелкните по нему правой кнопкой и примените действие Push All up to Here.
Мы переработали страницу Version Control в Settings/Preferences: теперь на ней размещены все доступные настройки. В узле Git настройки разбиты на разделы, соответствующие основным процессам: Commit, Push и Update. Добавлен узел Directory mappings, а узел Background удален, поскольку фоновые операции теперь включены по умолчанию.