PhpStorm 2020.2 - JetBrains представил второй мажорный релиз PhpStorm в этом году
PhpStorm 2020.2 - JetBrains представил второй мажорный релиз PhpStorm в этом году
JetBrains представил PhpStorm 2020.2 - второй мажорный релиз PhpStorm в этом году. Что нового в PhpStorm 2020.2:
Union types в PHP 8
Объединенные типы T1|T2|...
можно использовать везде, где типы можно указывать сейчас: в аргументах, свойствах и возвращаемых значениях. В этом случае переменная может принимать один из перечисленных типов.
Фактически объединенные типы давно используются в PHPDoc, но теперь интерпретатор действительно будет проверять их в рантайме.
Переключение версии языка
Чтобы увидеть все возможности, можно вручную переключить версию языка на PHP 8 в настройках Languages & Frameworks | PHP | PHP language level.
Или если в коде уже есть использование новых фич, то тогда переключиться можно с помощью квик-фикса (Alt+Enter).
А если версия PHP указана в composer.json, то PhpStorm подтянет ее автоматически.
Валидация типов
PhpStorm и раньше умел анализировать типы и находить нарушения по информации из тегов PHPDoc. С нативными декларациями эти возможности расширились.
Проверки делаются для всего: свойств, аргументов, возвращаемых значений.
Псевдотип false
Некоторые функции могут возвращать false
в случае ошибки. Например, так ведут себя strpos()
, array_search()
и еще 310 других стандартных функций.
В этом случае можно было бы указать возвращаемый тип как объединенный, например int|bool
, но по факту true
там никогда не будет.
Для таких случаев и введен псевдотип false
. Его можно использовать только в объединениях. Иначе PhpStorm подсветит невалидный код.
Дублирующиеся и избыточные типы
Многие комбинации в объединениях типов запрещены или просто лишние. Например:
bool|false
— потому что false входит вbool
;Foo|Foo
илиint|string|INT
— повторения;object|User
—object
заведомо содержит все остальное;iterable|array
илиiterable|Traversable
—iterable
включает array и Traversable;void
— может использоваться только в возвращаемом значении и только сам по себе;false
илиnull
— только как часть объединения.
PhpStorm подсветит все такие нарушения.
Nullable типы
Прежний синтаксис ?Type
теперь рассматривается как сокращение для Type|null
.
Но сокращенный вариант с ?
нельзя использовать в объединениях, потому что возникает неразрешимая двусмысленность.
Для таких случаев в PhpStorm есть квик-фикс (Alt+Enter).
Изменение типов при наследовании
Для методов действуют два правила:
Тип параметра контравариантен,то есть его можно расширять.
Инструменты БД
PhpStorm «из коробки» включает в себя почти все возможности DataGrip, которые охвачены в обзоре релиза DataGrip 2020.2 от наших коллег.
Веб
И, как всегда, все обновления из WebStorm 2020.2 тоже входят в PhpStorm. Например, с помощью плагина, Prettier можно использовать в качестве дефолтного форматтера в том числе и для PHP-файлов.
A full list of all the changes in this release is available in the really long PhpStorm 2020.2 release notes.