В этом релизе мы полностью поддержали PHP 8.1, улучшили обработку дженериков, реализовали drag-and-drop для перемещения классов и пространств имен, обновили HTTP-клиент, повысили удобство процесса развертывания и управления версиями, а также добавили новые возможности удаленной разработки.

Под катом подробный разбор всех изменений и новых возможностей с кучей гифок.

Скачать PhpStorm можно на сайте или через приложение Toolbox App.

Как и раньше, студентам, преподавателям и тем, кто занимается опенсорс-проектами, JetBrains предоставляет бесплатные лицензии. Стартапам доступна скидка 50%.



Итак, вот что мы подготовили для вас в этом обновлении:

Полная поддержка PHP 8.1


Дженерики в PHP



Улучшения рефакторингов



Удаленная разработка

Более быстрый и улучшенный деплоймент



HTTP клиент



VCS



Обновления UX



PHP 8.1


PHP 8.1 уже вышел! Подробнее об обновлениях языка можно узнать из видеоролика, который мы подготовили совместно с Brent Roose и авторами разных RFC: Larry Garfield, Matheu Napoli, Aaron Pietrowski, Дмитрий Стогов, Никита Попов.

PhpStorm 2021.3 полностью поддерживает изменения, введенные PHP 8.1. Подробнее об этом рассказываем ниже.

Как обычно, чтобы попробовать новые возможности, необходимо установить PHP 8.1 в качестве PHP language level. Настройка доступна в панели инструментов. Либо вы можете прописать соответствующее требование в composer.json.



Перечисления


Вместо набора констант теперь можно использовать перечисления (enum). Они обеспечат проверку типов из коробки.



Поддержка перечислений появилась в PhpStorm еще в релизе 2021.2. Подробнее об этом читайте в предыдущем хабрапосте.

Readonly-свойства


Свойства с флагом readonly — это свойства, которые нельзя изменить после инициализации (то есть после присвоения им значения).

В предыдущих версиях PHP можно было добиться похожего поведения с помощью приватных сеттеров. Однако ключевое слово readonly позволяет сделать класс более читаемым, а ограничение — более строгим.



Свойство readonly может быть инициализировано только в той же области видимости, в которой оно объявлено, то есть в самом объявлении либо в методе класса.

Свойства с флагом readonly должны быть типизированы, но если вы не знаете тип заранее, можно использовать mixed.

Если вы проинициализировали свойство readonly объектом, то этот объект (его внутреннее состояние) останется изменяемым.

У свойства readonly не может быть значения по умолчанию. Однако такое свойство можно инициализировать в конструкторе: нажмите Alt+Enter, чтобы применить соответствующее быстрое исправление:



Пересечения типов


В PHP 8.0 были добавлены объединения типов (union). А теперь в PHP 8.1 появились пересечения (intersection).

Синтаксис типов intersection такой: TypeA&TypeB. То есть значение должно одновременно являться instanceof TypeA и instanceof TypeB.

В PhpStorm 2021.3 автодополнение типов union и intersection устроено одинаково, ведь их различие только в том, что union может содержать члены всех указанных типов, а intersection должен содержать члены этих типов.



Комбинации с типами union PHP пока не поддерживает. Поэтому такое выражение будет считаться ошибкой:



В более старых версиях PHP можно было встретить пересечения типов в аннотациях PHPDoc. Они тоже поддерживаются в PhpStorm 2021.3. Когда вы решите перейти на PHP 8.1, то сможете легко трансформировать аннотации PHPDoc в нативные определения с помощью Alt+Enter:



Новый тип never


В PHP 8.1 появился новый тип для (не)возвращаемых значений — never.

Tип never означает, что функция (или метод) не возвращает ничего и либо генерирует исключение, либо завершает выполнение вызовом die(), exit(), trigger_error() и т. п.

Тип never улучшает анализ кода. Он делает практически то же самое, что и атрибут PhpStorm #[NoReturn], — отличие в том, что теперь это полноценная часть языка!



Финальные константы


PHP 8.1 позволяет объявлять константы класса как финальные, после чего их нельзя переопределить в дочерних классах.



В PHP 8.0 и более ранних версиях языка константы в интерфейсах были неявно финальными, и их нельзя было изменить. В PHP 8.1 эту неконсистентность убрали: теперь константы по умолчанию — не финальные.



Оператор new в инициализаторах


В PHP 8.1 для параметров, статических переменных, глобальных констант и аргументов атрибутов можно указывать значения по умолчанию.

У этого есть приятный побочный эффект — появляется возможность использовать вложенные атрибуты.



PhpStorm проверяет, где именно вы используете оператор new. Например, использовать его со свойствами или константами класса нельзя, так как при этом возникают проблемы с порядком инициализации:



Синтаксис First-class callable


В PHP 8.1 появилась возможность получить ссылку на любую функцию.

Раньше это нужно было делать вот так:
$fn = Closure::fromCallable('strlen');


Теперь все гораздо проще:
$fn = strlen(...);


Новый синтаксис соблюдает область видимости в точке создания вызываемого объекта, а также поддается статическому анализу и выглядит более лаконично.



Вызовы fromCallable можно преобразовать к новому синтаксису. Для этого нажмите Alt+Enter и выберите нужное быстрое исправление:

Устаревшие возможности


PHP порой удивлял своим причудливым поведением. Но с каждой новой версией языка проблем в нем становится все меньше. И PHP 8.1 не исключение: многие проблемные места объявлены устаревшими.

Чтобы перевести проект на PHP 8.1, прежде всего нужно поправить совместимость и свериться со списком устаревших возможностей.

PhpStorm поможет найти устаревший код и обновить его.

Вот пара примеров устаревших возможностей.

Использование интерфейса Serializable


Вместо интерфейса Serializable рекомендуется использовать магические методы __serialize() и __unserialize(), появившиеся в PHP 7.4.

В PHP 8.1 разрешает использовать Serializable, но только в тех случаях, когда реализующий его класс содержит __serialize() и __unserialize().

PhpStorm выделит неправильный код и предложит добавить магические методы в класс при помощи быстрого исправления:



Использование $GLOBALS


Некоторые варианты использование суперглобальной переменной $GLOBALS требовали специальный обработки в интерпретаторе, что влияло на производительность всех массивов. Поэтому были ограничены попытки изменить саму переменную, а вот чтение и запись в нее остались как раньше.


Подробнее об устаревших возможностях PHP можно узнать в руководстве по обновлению.

Улучшения для дженериков


В PhpStorm 2021.2 появилась долгожданная базовая поддержка дженериков. Мы продолжаем ее совершенствовать. Спасибо за ваши отзывы и тикеты в трекере!

Вот что нам удалось сделать в этом релизе:

Улучшение поддержки Doctrine Collections


Аннотация @template теперь поддерживает интерфейс IteratorAggregate. Таким образом, итерация по коллекциями Doctrine теперь работает из коробки!



Поддержка коллекций Laravel 9


В ближайшем выпуске Laravel, пакет illuminate/collections будет покрыт аннотациями дженериков. В PhpStorm 2021.3 для них автоматически заработает автодополнение кода.



Вывод дженерик-типов из конструктора


Допустим, в конструкторе есть дженерик-параметр @template, и вы хотите уточнить тип, передав объект в качестве аргумента. Это не сработало бы в предыдущих версиях. В версии 2021.3 это работает правильно. Также вы сможете воспользоваться автодополнением.



Поддержка аннотаций phpstan-*


PhpStorm 2021.3 поддерживает любые аннотации для дженериков. Можно использовать префикс @psalm-* или @phpstan-*, а также чистые теги без префиксов, например @template.

Улучшенные рефакторинги


Перемещение классов и неймспейсов с помощью drag-and-drop ????


Раньше, если вы перемещали файл или папку в дереве файлов проекта, то неймспейсы в классах при этом не изменялись, и приходилось править файлы вручную.

Теперь вы можете перемещать файлы и даже целые папки, используя drag-and-drop. PhpStorm сам обновит неймспейсы в классах и во всех их использованиях!



Рефакторинг Move Class / Move Namespace поможет вам легко реструктурировать проект. Ну а если что-то пойдет не так, то всегда можно отменить рефакторинг, нажав Ctrl-Z.

Чтобы этот рефакторинг работал, необходимо правильно настроить PSR-0 / PSR-4.




Мы переработали рефакторинги Inline method, Inline variable, Extract variable и Extract method. Они стали работать более надежно и предсказуемо. Попробуйте их!

Inline function or method


Когда тело метода более очевидно, чем его название, имеет смысл заменить вызовы метода его содержимым, а сам метод удалить.

Чтобы использовать этот рефакторинг, поместите каретку на вызов метода и нажмите Ctrl+Alt+N (⌥⌘N на macOS).



То же самое с приватными методами, используемыми всего один раз. Вы можете встраивать их при помощи нового быстрого исправления Inline method, доступного также по Alt+Enter:



Inline variable


Порой лишние переменные только загромождают код.

Вы можете заменить ссылку на переменную самим выражением, поместив каретку на переменную и нажав Ctrl+Alt+N (⌘⌥N на macOS).

Если переменная используется только один раз, ее можно заменить при помощи быстрого исправления (Alt+Enter):


Если вы не помните название рефакторинга или сочетание клавиш для его вызова, просто нажмите Ctrl+T (⌃T) и найдите нужный рефакторинг в списке.

Удаленная разработка


PhpStorm 2021.3 поставляется с возможностями удаленной разработки. Они позволят вам писать, запускать и отлаживать код с любой машины.

Теперь вы можете подключаться к удаленному серверу, на котором запущен бэкенд PhpStorm. Вся обработка данных выполняется на мощной удаленной машине. При этом вы можете работать над проектом привычным образом — как будто он размещен локально.

Функция удаленной разработки доступна на начальном экране PhpStorm, а также в новом приложении JetBrains Gateway (чтобы установить его, воспользуйтесь Toolbox App).

Пока что возможности удаленной разработки доступны в бета-версии. Мы продолжаем активно дорабатывать их.

Улучшенные возможности развертывания


PhpStorm позволяет загружать файлы на удаленную машину. В версии 2021.3 мы ускорили этот процесс и добавили несколько долгожданных возможностей.

Все настройки развертывания доступны в Settings/Preferences | Build, Execution, Deployment | Deployment.

Поддержка rsync


При использовании SFTP-сервера для развертывания в разделе Advanced, появится новая опция rsync.
Использование rsync позволяет значительно ускорить развертывание!
Вот результаты бенчмарка загрузки Drupal 8 (12 757 файлов, 120 МБ, SFTP на локальном Docker):

rsync выключен: 6.26 минут
rsync включен: 38.192 секунд — в 9 раз быстрее!
Чтобы включить rsync, перейдите в настройки SFTP-сервера и поставьте флажкок `Use rsync for download/upload`:



Путь к исполняемому файлу rsync настраивается в разделе Settings/Preferences | Tools | Rsync:

Для macOS и Linux он должен быть доступен сразу же. Для Windows мы рекомендуем использовать Cygwin и OpenSSH.

Повторная загрузка файлов


Загрузка файлов на сервер может зафейлиться по разным причинам. В таком случае вы сможете легко повторить загрузку.
Если загрузка сорвется, вы увидите ссылку Retry в окне File Transfer.



Ускорение для SFTP/FTP/FTPS благодаря многопоточным соединениям


Мы подготовили долгожданную реализацию многопоточного развертывания. Поддерживаются операции upload, download и drag-and-drop. Синхронизация и автоматическая загрузка пока не поддерживаются.
Новая опция Number of connections находится в секции Advanced в конфигурации SFTP/FTP/FTPS сервера. Число подключений по умолчанию — 5:



Новое действие Upload all opened files


Если у вас открыто несколько файлов в разных вкладках, то теперь можно загрузить их все одной командой, Upload All Open Files to…. Она доступна в разделе Tools | Deployment, через поиск по командам (Cmd/Ctrl+Shift+A), или из контекстного меню любого файла.



Выбор сервера по умолчанию для проекта


В строке состояния доступен новый виджет, который показывает текущий сервер по умолчанию. Здесь же вы можете выбрать другой сервер.



Поддержка прокси для SSH-соединений


Теперь можно указать прокси-сервер HTTP или SOCKS для SSH-конфигураций в Preferences / Settings | Tools | SSH Configurations.



Также можно синхронизировать настройки SSH-прокси с глобальными настройками IDE. Для этого установите флажок Use global IDE proxy settings.

Улучшения HTTP-клиента


Поддержка текстовых и JSON стримов


Теперь стало проще тестировать потоковые приложения, потому что версия PhpStorm поддерживает следующие типы контента: text/event-stream, application/stream+json и application/x-ndjson. Это означает, что HTTP-клиент больше не будет ждать окончания стрима, а будет отображать сразу вывод на лету.

Бинарные ответы в HTTP-клиенте


Теперь, если HTTP-клиент получает в качестве ответа изображение, он отображает картинку в консоли ответа.



Перенаправление вывода в файл или каталог


HTTP-клиент теперь может перенаправлять вывод в файл или каталог с помощью соответствующих операторов:
  • >> (всегда создает новый файл),
  • >>! (переписывает файл, только если он уже существует).


Поддержка идентификаторов HTTP-запросов


PhpStorm 2021.3 теперь понимает идентификаторы (или имена) для запросов — как объявленные в виде комментария (с @name), так и объявленные в виде текста в первом разделителе (###).
Вы сможете вызывать запрос по идентификатору из окна Services, а также из диалоговых окон Run Configuration, Run Anything или Search Everywhere.

VCS


Выравнивание изменений при просмотре Diff


Мы добавили новую опцию Align Changes Highlighting в окне Diff под шестеренкой.

Эта опция выравнивает строки, в которых нет изменений, так, чтобы они отображались рядом друг с другом. Так вы будете лучше видеть код, который был добавлен или удален.

Checkout and Rebase onto Current для удаленных веток


Действие Checkout and Rebase onto Current позволяет сделать чекаут выбранной ветки и перебазировать ее поверх текущей ветки. Раньше это работало только для локальных веток, а теперь возможно и для удаленных.



Реорганизация настроек VCS


Настройки системы контроля версий доступны в Preferences/Settings | Version Control. Мы по-новому структурировали их —  теперь вам будет легче находить нужные действия.



Новое действие Push All up to Here


Если вы хотите сделать push части коммитов, а другую часть пока оставить в работе, можете использовать новое действие Push All Up to Here.

Просто перейдите на вкладку Log окна Git, выберите нужный коммит и, щелкнув по нему правой кнопкой мыши, выберите действие Push All up to Here.



UX


Новое окно Bookmarks


Мы объединили сущности Favorites и Bookmarks в одну и создали отдельное окно Bookmarks.



Вы можете добавить закладку для определенной строки, файла или папки, нажав F3 на macOS или F11 на Windows/Linux. Все созданные закладки будут доступны в окне Bookmarks.

Просмотр кода в Show Usages


Диалоговое окно Show Usages, доступное по Ctrl+Click (⌘+Click) теперь показывает превью исходного кода для найденного использования.

Чтобы включить предпросмотр, нажмите кнопку на панели инструментов.



Улучшения для Markdown


Одной из самых муторных проблем при редактировании markdown всегда было добавление и редактирование таблиц. В PhpStorm 2021.3 эта проблема решена.

Теперь достаточно открыть контекстное меню (в любой точке markdown-файла) и выбрать Insert | Table. И это все! Размер исходной таблицы можно выбрать мышкой.

Для создания новой строки таблицы можно использовать Shift+Enter, а для перехода к следующей ячейке — Tab.



Инструменты для работы с БД



PhpStorm включает встроенную функциональность DataGrip. Подробнее обо новых возможностях DataGrip читайте в обзоре релиза DataGrip 2021.3 от наших коллег.

Веб-разработка



И как всегда, в PhpStorm вошли все обновления из WebStorm 2021.3.




А вот видеоролик (на английском), представляющий главные фичи нового релиза:






На этом пока все. Будем рады вашей обратной связи — вопросам, пожеланиям, баг-репортам и просто мыслям. Оставляйте их в комментариях ниже.

Комментарии (37)


  1. DEamON_M
    09.12.2021 15:32
    +1

    Люблю новые релизы от JB.
    А как настроить ForwardAgent при открытии ssh сессии через phpStorm?
    В issue написали, что сделано, но у меня так и не заработало. И хотя галочка «Parse config file ~/.ssh/config» в настройках ssh соединения стоит в ssh -T git@bitbucket.org всё равно выдаёт "Permission denied (publickey)." (при подключении не через phpStorm ForwardAgent работает)


    1. lvo
      09.12.2021 20:15
      +1

      Речь идёт про git или про SFTP? В git используется OpenSSH, а в SFTP свой SSH-клиент, и ForwardAgent был сделан как раз для SFTP, к тому же ещё два релиза назад. И здесь меня смущает git@bitbucket.org.

      > Permission denied (publickey).

      А это скорее всего говорит о том, что аутентификация не прошла, т.е. до этапа проброса агента на сервер дело даже не дошло. Вот такой вредный баг проскочил в релиз большинства IDE, но при этом в PhpStorm его не должно было быть, фикс приехал в релизную ветку до выпуска 2021.3. На всякий случай, проверьте, пожалуйста, не вернулся ли этот баг. Работает ли кнопка Test Connection в SSH Configurations? А в Deployment?


      1. Dekmabot
        09.12.2021 20:23

        С релизом ещё пропала поддержка ssh-ключей в формате putty, но конвертирование в одычный формат pem решает проблему


        1. lvo
          09.12.2021 20:55
          +2

          Это ужасно. Никто не собирался ломать ключи putty. Создайте, пожалуйста, задачку на youtrack в очереди IDEA, и приложите туда idea.log из меню Help | Show Logs in Explorer/Finder/Files. Заодно ещё поможет заголовок ключа putty — те несколько строчек, что идут до длинного base64 и описывают формат.


          1. mynque
            10.12.2021 15:23
            +1

      1. DEamON_M
        09.12.2021 21:23

        Я имел ввиду, когда подключается по ssh через Tools -> Start SSH Session и выбираешь подключение, то не работает ForwardAgent. Хотя в настройках ssh подключения галочка «Parse config file ~/.ssh/config» стоит, ну и соответственно в самом файле config ForwardAgent настроет. Если же использовать обычный bash-терминал, то при подключении ForwardAgent работает.

        Это не критично, но не удобно каждый раз вводить логины/пароли и ip для коннекта по ssh к серваку, если они уже есть в IDE и там можно быстро подключиться. Просто иногда нужно что-нибудь из гита вытянуть на сервере, а ForwardAgent не работает.


        1. lvo
          09.12.2021 21:35
          +1

          Разобраться всё равно надо. Создайте, пожалуйста, задачку на youtrack в очереди IDEA. И к ней отладочные логи для ssh. Есть предположение, отчего это может быть, возможно закрою задачу как дубликат, но пока не ясно.


          1. DEamON_M
            10.12.2021 09:38

            Вышел на работу создал issue как мог)


  1. Maksclub
    09.12.2021 19:23
    +7

    Раньше, если вы перемещали файл или папку в дереве файлов проекта, то неймспейсы в классах при этом не изменялись, и приходилось править файлы вручную.

    почему-то думал, что это всегда работало, а у меня руки кривые :)

    огонь!


  1. vsh797
    09.12.2021 19:51

    На win 10 в 2021.2.3 ctrl+tab открывает предыдущий файл. В 2021.3 что-то не работает..


    1. mynque
      10.12.2021 14:32

      И в 2021.2, и в 2021.3 Ctrl+Tab замаплен на действие Switcher, которое и должно переключать на предыдущий файл. А в Settings | Keymap | Find Actions by Shortcut у вас шорткат определяется, действие находится?


    1. tronin
      10.12.2021 14:33

      Что там, что там ctrl+tab открывает Switcher по умолчанию, в котором доступны предыдущие файлы. Проверьте что в Keymap для switcher стоит Ctrl+Tab.

      Также, предыдущие файлы можно открывать через Ctrl+E.


      1. vsh797
        10.12.2021 15:07

        По ctrl+tab нашлось действие Other | Switcher (RecentFiles) Actions | Switcher. Я работаю со скринридером. Если на switcher поставить ctrl+1, то все отрабатывает так же, как и в 2021.2, а ctrl+tab, хоть тоже назначен, ни к чему не приводит.


  1. Lopar
    09.12.2021 21:32

    Вечно порываюсь спросить и забываю: а phpstorm всключает в себя весь datagrip полностью, или какие-то его части? А то я до того как разобрался начал платить и за то и за другое, а теперь почти полгода думаю, стоит ли покупка datagrip свеч, если есть phpstorm?


    1. mynque
      10.12.2021 14:33

      Однозначный ответ - не стоит. Все, что есть в DataGrip, есть в PhpStorm.


    1. tronin
      10.12.2021 14:35

      Полностью :)


  1. php7
    09.12.2021 21:53

    1. Сохраняются ли удаленные ветки в которые пушил с локальной? А то там постоянно master (или другая ветка, с которой делал checkout)? В 2016 сохраняло.

    2. Также в 2021.2 checkout new branch не сохраняет ветку, с которой потом подтягивать изменения через <Ctrl> + <T>. Починили?

    Очень неудобно.


    1. BoShurik
      09.12.2021 23:50

      2.Тоже жду эту фичу. Проголосовать можно тут: https://youtrack.jetbrains.com/issue/IDEA-228145


    1. mynque
      10.12.2021 14:54

      1. Это сложная история, кажется что наша VCS команда считает что так правильнее.
        Вот тред на эту тему, там есть некоторые воркэраунды: https://youtrack.jetbrains.com/issue/IDEA-98693
        Плюс, в related issues есть некоторые, э, related issues, которые тоже могут быть интересны.


      1. php7
        10.12.2021 17:34

        Оттуда:

        Any branch you push to will be remembered and you accidentally could bush to a wrong branch next time, if e.g. you need to push a branch somewhere only once and then push to the upstream/tracked branch again. The better approach is to set defaults. It is tracked branch by default, but if it does not work - configure git accordingly.

        А так есть опасность напушить в мастер. Пушить в другую ветку те самые коммиты не приходилось. Вдруг что, делалась отдельная локальная ветка.

        Сделали бы настройку.


  1. interprise
    09.12.2021 22:48
    +1

    Не думали сделать семейную подписку на 1-2 человека?


    1. slaFFik
      09.12.2021 23:09
      +2

      Семейная подписка (которая обычно дороже) на 1 человека? Выглядит отличным бизнес решением для JB :)


    1. QeqReh
      10.12.2021 07:20
      +4

      Уж лучше подписку на два продукта со скидкой... У меня несколько знакомых пользуются двумя IDE и вынуждены за них платить по отдельности.


      1. tommyangelo27
        11.12.2021 04:10

        Можно и на три, с ещё большей скидкой ???? (пользуюсь Штормом, Goland и Rider)


  1. Marchao
    10.12.2021 00:08

    Люблю продукты JetBrains, но с каждым релизом добавляется мелкий глюк(на разных устройствах с win10). В прошлых релизах не давал ввести больше одного символа в шаблон ветки для ветки гита в Tasks, в этом серьёзнее беда, поиск по удалённому серверу тоже ограничивается одной буквой и перепрыгивать через некоторые правильные значения (в /etc искал php и при навигации стрелочкой перепрыгивал через нужную папку php.d)

    Я один такой счастливчик или ещё у кого-то подобные приколы бывают.

    Автору спасибо за статью!

    JetBrains спасибо за продукты, которые позволяют получать от разработки удовольствие.


  1. vsh797
    10.12.2021 08:53

    Еще б какой-нибудь способ простого запуска шторма в режиме удаленной разработки из под WSL2..


    1. mynque
      10.12.2021 14:28

      Мы движемся в этом направлении вместе с Gateway.
      Вообще, если ваш WSL дистро доступен по SSH, вы можете использовать Гейтвей для запуска там любой нашей IDE.


      1. vsh797
        10.12.2021 15:15

        Да, можно попробовать прокинуть ssh, поставить ide и Gateway на обоих концах и связать. Вы в будущем планируете делать этот процесс удобнее, как в VSCode, например?


  1. NeLexa
    10.12.2021 09:02

    Форматирование таблиц в Markdown работает отлично, но лишь до того момента, пока в таблице не нужно указать символ |. При его вводе, редактор сразу отделяет его от экранирования обратной чертой.

    | Symfony version | PHP versions    |
    ------------------|-----------------|
    | ^5.1            | ^7.4\|^8.0\|^8.1|


    1. mynque
      10.12.2021 14:25

      К сожалению, есть такое, да: https://youtrack.jetbrains.com/issue/IDEA-213125


  1. vsh797
    10.12.2021 11:43

    Дженерики на имплементируемых интерфейсах вроде как все еще не работают… Планируете добавить поддержку?


    1. mynque
      10.12.2021 14:51

      Вроде бы сделали же: https://youtrack.jetbrains.com/issue/WI-61497
      Или вы о другом кейсе?


      1. vsh797
        10.12.2021 15:23

        Об этом. Но в методе rand из вашего примера на $min автокомплита нет.


        1. mynque
          10.12.2021 15:47
          +1

          А. До 2021.3 вы бы и после вызова rand() не получили комплишена от DateTime, а теперь он там есть.
          Типы параметров пока что не прокидываются, увы: https://youtrack.jetbrains.com/issue/WI-56034
          По срокам ничего сказать не могу, но судя по количеству воутов, должны сделать.


  1. maximkurchinskyj
    10.12.2021 12:59
    +1

    Куча полезных фич , спасибо


  1. abyrvalg
    10.12.2021 12:59

    Может, кто подскажет, куда исчезла опция 'replace with import'? (Примерно как-то так называлась). Сейчас во всех случаях предлагается только 'replace with alias', что в большинстве случаев бессмысленно.


    1. mynque
      10.12.2021 14:21
      +2

      Теперь это действие - квик-фикс для инспекции Fully qualified name usage, по-видимому, она у вас выключена. Если вы не хотите подсветку, можно изменить ее Severity на No highlighting, only fix.