- PVSM.RU - https://www.pvsm.ru -
Всем привет! Мы рады представить вам третий мажорный релиз PhpStorm в этом году!
Под катом — подробный разбор всех заметных изменений и новых возможностей. Осторожно — очень много картинок.
Скачать новую версию можно на сайте [2] или с помощью Toolbox App [3]. Как всегда, доступна 30-дневная пробная версия. Полную же версию могут использовать обладатели действующей подписки [4] на PhpStorm или All Products pack, а также бесплатно — студенты [5] и разработчики [6] проектов с открытым исходным кодом.
В каждом релизе мы уделяем немало внимания улучшению производительности. Но в этот раз мы пошли еще дальше и устроили целый трехмесячный марафон по качеству, во время которого вся команда платформы IntelliJ была сосредоточена на шлифовке IDE с разных сторон. И вот чего удалось достичь:
Мы не планируем останавливаться на достигнутом и продолжим работу над уменьшением времени запуска и другими оптимизациями в следующих релизах.
PHP 7.4 уже вышел [7]! И в нем очень много крутых фич [8]. Мы начали выкатывать поддержку PHP 7.4 в предыдущем релизе, а в PhpStorm 2019.3 полностью поддерживаются все новые возможности языка.
Это, пожалуй, самая ожидаемая фича PHP 7.4, и PhpStorm поддерживает ее начиная с версии 2019.2. Но давайте посмотрим еще разок, потому что мы поправили мелкие проблемы и покрыли некоторые пограничные случаи.
Конечно же, подсвечиваются все неправильные использования и несоответствия типов:
Вероятно, вы захотите добавить декларации типов к свойствам классов в ваших проектах. В PhpStorm это делается быстро, потому что он умеет определять тип существующих полей на основе информации в PHPDoc, дефолтного значения или тайпхинта аргумента (если вы инжектили свойство через конструктор и указали его).
В любом случае, нажмите Alt+Enter на свойстве, у которого нет типа, и в выпавшем списке выберите Add declared type for the field.
Если у вас есть анонимные функции с однострочным телом, то в PHP 7.4 вы можете использовать для них синтаксис коротких лямбд: fn(parameter_list) => expr
При этом нет необходимости добавлять секцию use
, потому что поддерживается автоматический биндинг по значению переменных из внешнего скоупа:
Нажмите Alt+Enter на анонимной функции и выберите пункт Convert closure to arrow function, чтобы сконвертировать функцию автоматически:
В PHP 7.4 можно вставлять символ подчеркивания в любом месте числа, чтобы визуально его отформатировать и улучшить читаемость кода.
Нажмите Alt+Enter на любом числе и примените Add number separators. Это автоматически добавит символ ‘_
‘ после каждого третьего знака в десятичных числах, или после каждого четвертого знака в шестнадцатеричных, двоичных и восьмеричных.
Почти во всех языках программирования тернарный оператор считается справа налево. В PHP все было наоборот, что весьма неинтуитивно и могло приводить к ошибкам. В PHP 7.4 левая ассоциативность тернарного оператора больше не поддерживается. Это значит, что либо вы не используете вложенные тернарные выражения вообще, либо используете, но явно указываете порядок выполнения с помощью скобок.
PhpStorm 2019.3 подсветит устаревшее выражение, а вы можете уточнить, что имелось в виду, с помощью быстрого исправления ( Alt+Enter – ну, вы уже в курсе, да?).
Проблемы интерфейса Serializable
в PHP исправить не представлялось возможным, поэтому было решено добавить два новых магических метода __serialize()
и __unserialize().
PhpStorm поможет найти их использования в коде:
PHP 7.4 исправляет множество несоответствий, в частности, теперь позволяет «сужать» тип возвращаемого значения в наследниках и «расширять» тип параметров.
В PHP не только добавляют новые возможности, но и удаляют старые, делая язык более чистым и удобным для работы. И в PHP 7.4 есть целый ряд “депрекаций”.
PhpStorm 2019.3 подсвечивает те куски кода, которые требуют вашего внимания. Где возможно, предоставляется quick-fix ( Alt+Enter) для исправления устаревшего выражения.
C выходом PHP 7.4 старые версии PHP заброшены [9]. PHP 7.2 будет еще в течение года получать только исправления безопасности, а PHP 7.1 теперь официально не поддерживается. Это значит, что если будет обнаружена уязвимость, то взлом вашего сервера – это лишь вопрос времени. Так что самое время обновиться.
Новый стандарт PSR-12 [10] пришел на смену старому доброму PSR-2 и расширяет его правилами для новых фич языка, а также исправляет неточности. Спасибо PHP-FIG за отличный апдейт! Если вы использовали PSR-2, то посмотрите, что изменилось в PSR-12 [11].
Стиль PSR-12 есть в PhpStorm 2019.3, и IDE сама предложит переключиться на него. Чтобы сделать это вручную, вызовите Set from… в разделе Preferences | Editor | Code Style | PHP:
Некоторые правила PSR-12 были реализованы в виде инспекций, которые отключены по умолчанию, но PhpStorm предложит их включить, когда вы выберете стиль PSR-12. Настроить инспекции под себя можно в Preferences | Editor | Inspections in PHP | Code Style | PSR-12:
После этого форматируйте код вручную нажатием Cmd/Ctrl+Alt+L:
Или делайте это автоматически перед коммитом с помощью опции Cleanup:
PhpStorm теперь поддерживает разработку в окружении WSL [12] (Windows Subsystem for Linux), то есть когда вы запускаете IDE на Windows 10, целевая система разработки WSL/Linux. Вы можете указать удаленный PHP-интерпретатор из WSL и использовать его для запуска скриптов, тестов, команд Composer и отладки.
Чтобы начать, установите и настройте WSL по инструкции [13], а затем установите PHP, если он не идет в поставке в выбранном дистрибутиве Linux.
После этого можно добавить CLI интерпретатор через File | Settings | Languages & Frameworks | PHP.
Добавленный интерпретатор можно использовать для запуска тестов, Composer, или любой другой run-конфигурации.
Подсветка PHP в Markdown и строках
Иногда может потребоваться использовать PHP в строковом литерале. Надеюсь, все-таки не в eval()
, но вы понимаете, о чем речь. Или, может быть, вы хотели бы видеть подсветку PHP во фрагментах кода в markdown-файлах.
Всё это доступно в PhpStorm 2019.3 благодаря специальному диалекту PHP, который называется InjectablePHP. Этот диалект работает так же? как и обычный PHP, но при этом не требует открывающихся тегов.
Он будет автоматически внедрен в markdown, если вы используете маркер php
:
А также в строках Heredoc/Nowdoc, опять же с маркером PHP
:
Ну, и в eval()
это тоже работает автоматически:
Возможность выбрать интерпретатор PHP для тестовых run-конфигураций
Раньше требовалось создать отдельную run-конфигурацию для удаленных интерпретаторов. В PhpStorm 2019.3 мы добавили возможность указать интерпретатор для любых PHP run-конфигураций. Так что можно легко использовать для этого Docker, Vagrant, тот же WSl или любой другой вариант.
Выбор шрифта и цвета псевдопеременной $this
Улучшения PHPDoc
Традиционно PhpStorm предоставлял переходы по FQN и ссылкам в PHPDoc, но сам блок при этом отображался одним цветом как обычный комментарий.
В PhpStorm 2019.3 докблоки получили подсветку для типов, переменных, параметров, методов и свойств. Если в блоке встречается HTML, то его теги тоже подсвечиваются.
Быстрые исправления для условных выражений
Выражения if-else
, возможно, самые часто используемые конструкции языка. В PhpStorm 2019.3 мы добавили несколько быстрых исправлений Alt+Enter для манипуляции ими.
Если внутри выражения if
присутствует присваивание, то его можно быстро вынести на отдельную строку:
Если встретились вложенные условия if
, то их можно объединить в одно:
Также можно объединить else
с if
внутри в один elseif
:
Или наоборот – разделить elseif
на else
и if
:
Рефакторинг Inline constant
Это действие противоположно Extract constant [14], то есть в результате выполнения все использования константы заменяются на ее значение. Для использования нажмите Cmd/Ctrl+Alt+N на константе.
Больше разных рефакторингов можно найти, нажав Cmd/Ctrl+T.
Удалить вызов функции
Нажмите Shift+Cmd/Ctrl+Delete, что удалить избыточный вызов функции:
Авто-вставка <?php при вводе <?
Автодополнение ‘=’ до ‘=>’ после ключа массива
Еще один маленький “таймсейвер” в 2019.3: когда вы добавляете элемент в массив, PhpStorm быстро допечатает =>
, достаточно лишь нажать =
:
В редакторе http-
и rest
-файлов появилась панель инструментов с быстрыми действиями:
Вы можете записывать несколько запросов в одном http
-файле, разделяя их символами ###
. Это особенно удобно, если нужно сделать какие-то цепочки вызовов, где результат из одного используется в последующем.
Но раньше приходилось запускать все запросы по одному, а теперь можно выполнить весь файл одним нажатием.
Если запрос большой, например вы отправляете форму с данными или в запросе много заголовков, то вам понравится возможность сворачивания запроса.
Варианты на выбор: свернуть весь запрос, оставив только первую строку, или свернуть только тело.
Больше нет необходимости печатать хост в запросе, если вы его уже использовали где-то в проекте. PhpStorm предложит подходящий вариант в списке:
Мы добавили три динамических переменных, которые можно использовать в любом месте запроса:
$uuid
– генерирует UUID-v4 (e9e87c05-82eb-4522-bc47-f0fcfdde4cab)$timestamp
– текущая временная метка в формате Unix (1563362218)$randomInt
– случайное число от 0 до 1000
Как обычно, для вставки переменных используйте двойные фигурные скобки:
GET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}
Обо всех возможностях HTTP-клиента смотрите в видеоролике:
HTTP Client in PhpStorm [15]
В новом диалоге можно тут же залогиниться в GitHub, или, если вы уже залогинены, посмотреть список доступных репозиториев.
Мы убрали опцию Checkout и разделили ее на две операции: New Branch from Selected и Checkout. New Branch from Selected создает новую ветку, но не устанавливает трекинг. А новый Checkout создает новую локальную ветку и устанавливает трекинг remote-ветки.
Теперь можно запушить любую ветку, не переключаясь на нее. В попапе VCS | Branches выберите ветку и используйте Push:
Теперь можно сконфигурировать формат даты, которая будет отображаться в VCS Annotate или в любых отображениях лога. Например, вы можете установить значение mm/dd/yyyyy, если хотите использовать формат США.
Для PhpStorm есть много крутых плагинов [16], но раньше управлять ими было не всегда удобно, потому что каждый раз после установки/удаления требовался перезапуск IDE. В PhpStorm 2019.3 на уровне инфраструктуры мы реализовали поддержку динамической установки плагинов. Это значит, что теперь есть возможность устанавливать и удалять плагины без перезапуска. Пока что это доступно только для тем и плагинов с картами горячих клавиш, но в следующих релизах мы планируем распространить это на большинство плагинов.
Полосы прокрутки теперь можно сделать более различимыми с помощью опции “Use contrast scrollbars” в Preferences | Appearance & Behavior | Appearance.
Если включена опция Smooth scrolling в Preferences | Appearance & Behavior | Appearance, то прокрутка мышью или тачпадом во всем интерфейсе будет гладкой, а не построчной.
Выделите кусок кода в редакторе и вызовите Find нажатием Cmd/Ctrl+F и поиск будет осуществляться только по выделенному тексту. Если нажать Cmd/Ctrl+Fещё раз, то поиск переключится на весь файл.
Теперь можно легко отсортировать выбранные строки в редакторе вызвав Edit | Sort Lines из меню или командой Sort Lines в поиске по командам Find Actions по нажатию Cmd/Ctrl+Shift+A:
Больше разных действий со строками доступно в плагине String Manipulation [17].
Наконец-то настал этот день, когда мы начали работу над поддержкой MongoDB.
Что, собственно, работает в этой версии:
Просмотр коллекций
Можно видеть коллекции и поля в окне баз данных. Мы получаем первые 10 документов из каждой коллекции, чтоб вытащить информацию о полях (настраивается).
Просмотр данных
Смотрите документы из любой коллекции или результаты запроса. Работает сортировка по колонкам, фильтры и пагинация.
Также можно включить режим отображения в виде дерева нажав на шестерёнку и дальше View as… | Tree.
Консоль запросов
Пока в консоли нет дополнения кода, но запускать запросы и просматривать результаты уже можно. Поставьте курсор на запросе и нажмите Cmd/Ctrl+Enter или на иконку Play в тулбаре.
Дополнение для запросов ожидается в следующих версиях.
PhpStorm включает в себя все возможности DataGrip [18] из коробки, так что в инструментах БД еще очень много других нововведений. Скоро будет обзор релиза DataGrip 2019.3 от наших коллег.
Также, как всегда, PhpStorm включает в себя все обновления из WebStorm [19].
А полный список изменений можно найти в очень больших release notes [20].
И напоследок, короткий ролик (на английском) с демонстрацией главных фич релиза:
На этом все на этот раз. Спасибо, что дочитали до конца! Вопросы, пожелания, баг-репорты и просто мысли высказывайте в комментариях!
Ваша команда JetBrains PhpStorm
Автор: Роман Пронский
Источник [21]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/338250
Ссылки в тексте:
[1] Image: https://habr.com/ru/company/JetBrains/blog/478030/
[2] сайте: https://www.jetbrains.com/ru-ru/phpstorm/whatsnew/
[3] Toolbox App: https://www.jetbrains.com/ru-ru/toolbox/app/
[4] действующей подписки: https://www.jetbrains.com/ru-ru/phpstorm/buy/#personal?billing=yearly
[5] студенты: https://www.jetbrains.com/ru-ru/student/
[6] разработчики: https://www.jetbrains.com/ru-ru/buy/opensource/?product=phpstorm
[7] вышел: https://www.php.net/releases/7_4_0.php
[8] крутых фич: https://www.php.net/manual/en/migration74.new-features.php
[9] заброшены: https://www.php.net/supported-versions.php
[10] стандарт PSR-12: https://www.php-fig.org/psr/psr-12/
[11] что изменилось в PSR-12: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide-meta.md#5-changelog-from-psr-2
[12] WSL: https://docs.microsoft.com/en-us/windows/wsl/about
[13] инструкции: https://docs.microsoft.com/en-us/windows/wsl/install-win10
[14] Extract constant: https://www.jetbrains.com/help/phpstorm/extract-constant.html
[15] HTTP Client in PhpStorm: https://www.youtube.com/watch?v=n8KCuKhDSZY
[16] много крутых плагинов: https://plugins.jetbrains.com/phpstorm
[17] String Manipulation: https://plugins.jetbrains.com/plugin/2162-string-manipulation/
[18] DataGrip: https://www.jetbrains.com/datagrip/
[19] все обновления из WebStorm: https://habr.com/ru/company/JetBrains/blog/477078/
[20] release notes: https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+2019.2+Release+Notes
[21] Источник: https://habr.com/ru/post/478030/?utm_source=habrahabr&utm_medium=rss&utm_campaign=478030
Нажмите здесь для печати.