company_banner

PhpStorm 2020.1: поддержка composer.json, инструменты для PHPUnit, покрытие кода с PCOV и PHPDBG, Grazie и другое



    Привет, Хабр! Рады представить первый мажорный релиз PhpStorm в этом году!

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

    Скачать PhpStorm 2020.1 можно на сайте или с помощью Toolbox App. Там же 30-дневная пробная версия. Все продукты JetBrains доступны бесплатно для студентов и разработчиков опенсорсных проектов.

    Поддержка composer.json


    Все действия по работе с зависимостями теперь доступны непосредственно в файле composer.json и работают прямо в редакторе.

    Создать новый файл composer.json можно из контекстного меню или горячей клавишей Ctrl(⌘)+N. Шаблон этого файла находится в настройках Preferences/Settings | Editor | File and Code Templates.



    Управление зависимостями

    Чтобы добавить зависимость, достаточно просто начать писать имя вендора и пакета, и появится список автодополнения с подходящими вариантами.



    В поле версии будут предложены доступные версии этого пакета. Пока карет (^) или другой символ для указания диапазона версий придется добавлять вручную, но в следующих выпусках мы это исправим.
    Для требований по версии PHP или наличия расширений автодополнение тоже будет работать.

    Обновление и установка пакетов

    Если файла composer.lock еще нет и пакеты не установлены, то PhpStorm будет подсвечивать название секции require и require-dev. Чтобы установить их, можно нажать кнопку Install в тулбаре над редактором. Или воспользоваться быстрым действием по нажатию Alt(⌥)+Enter и выбрать Install packages.



    А вот если установлены не все пакеты, то PhpStorm подсветит недостающие. Тогда Alt(⌥)+Enter можно вызвать на любом из них и выбрать Update package или Update all packages.

    Рядом с указанным требованием по версии серым будет написана версия пакета, которая реально установлена. А во всплывающем диалоге для пакетов будет информация с packagist.org о числе скачиваний и звездочек.



    Всю информацию о пакетах и их версиях PhpStorm берет с packagist.org и кеширует.

    Навигация к файлам и папкам

    Наверняка вы знаете, что по нажатию Ctrl(⌘)+Click и Ctrl(⌘)+B можно переходить к определению сущностей или искать их использования.

    В composer.json это тоже будет работать. Если нажать Ctrl(⌘)+Click на пакете, то соответствующая директория будет подсвечена в Project Tree. А если на файле, то он будет открыт в редакторе.



    Нажатие Ctrl(⌘)+Click или Ctrl(⌘)+B на любой ссылке в composer.json ожидаемо откроет ее в браузере.

    Автодополнение в секциях autoload(-dev)
    Для неймспейсов и путей работает автодополнение на основе информации из классов и структуры директорий проекта.



    Ctrl(⌘)+Click и Ctrl(⌘)+B для перехода к файлам и папкам здесь тоже работает.

    Улучшения для скриптов

    Во-первых, таким же образом работают переходы к файлам/папкам/методам. Во-вторых, поддерживаются алиасы для команд. И, в-третьих, скрипты можно запускать из редактора нажатием кнопки [play] напротив имени скрипта.

    При этом автоматически создается Run-конфигурация. Это значит, что повторно запускать скрипт можно горячей клавишей Ctrl(⌃)+R, что довольно удобно при отладке:



    Установка инструментов качества кода
    Если в dev-зависимостях есть FriendsOfPHP/PHP-CS-Fixer, то PhpStorm проверит, включена ли соответствующая инспекция и установлен ли набор правил. Если нет, можно будет вызвать Alt(⌥)+Enter, чтобы всё исправить:



    Улучшения вывода типов PHP


    Движок вывода типов — это основа PhpStorm, и в этой версии в нем было сделано несколько заметных изменений.

    Подсветка лишних тегов var
    Добавлять теги @var — хороший способ подсказать PhpStorm тип переменной. Но мы постоянно улучшаем вывод типов, и некоторые такие объявления вполне могут оказаться избыточными, т. к. PhpStorm уже знает тип переменной.

    Такие случаи будут подсвечены, и их можно удалить с помощью квик-фикса Alt(⌥)+Enter -> “Remove var:



    Отслеживание null-типов — сложная задача, и были места, где PhpStorm не справлялся. Теперь в 2020.1 PhpStorm знает, когда переменная может быть null, а когда нет.

    Вот примеры:



    Автодополнение для инициализированного массива

    Допустим, у вас есть массив с известными элементами, и позже вы пытаетесь итерироваться по нему. Раньше здесь не работало автодополнение, так как информация о типе терялась В 2020.1 всё работает:



    Автодополнение в array_map/array_filter

    В теле замыкания, которое передано в функции array_map() и array_filter(), теперь работает дополнение для аргументов.



    Покрытие кода с помощью PCOV и PHPDBG


    Строить покрытие кода можно с помощью Xdebug. Но поскольку это прежде всего отладчик, то у него есть приличные накладные расходы. Чтобы ускорить получение отчета о покрытии, можно использовать более легковесные инструменты: расширение krakjoe/pcov или встроенный в PHP 5.6+ PHPDBG.

    Оба теперь поддерживаются в PhpStorm. Нужно создать Run-конфигурацию для тестов и в настройках выбрать желаемый драйвер покрытия. Затем запустить тесты с подсчетом покрытия нажав кнопку :



    Подробнее о различиях в подсчете покрытия между Xdebug, PCOV, and phpdbg можно прочитать в README.

    Инструментарий PHPUnit


    В недавно вышедшем PHPUnit 9 (и уже 9.1) много возможностей было удалено или объявлено устаревшими. Чтобы ускорить миграцию и предотвратить ошибки, мы добавили пачку инспекций и квик-фиксов.



    Создать новый тест для класса

    Вызвав Alt(⌥)+Enter на объявлении класса и выбрав Create New PHP Test можно быстро получить скелет для теста.



    Метаданные


    Метаданные в файле .phpstorm.meta.php позволяют предоставить PhpStorm дополнительные сведения о вашем проекте и тем самым улучшить автодополнение кода. Например, эта возможность используется в плагине Symfony и в Laravel IDE Helper.

    Больше о возможностях метаданных можно узнать из доклада PHP как инструмент разработки PhpStorm на PHP Russia 2019.

    В PhpStorm 2020.1 добавлен ряд улучшений для метаданных.

    Индекс параметра в директивах override, map, и type

    Раньше с помощью override(), map(), и type() можно было изменить поведение первого аргумента функций. В PhpStorm 2020.1 можно указать произвольный индекс параметра:



    Доступ к свойствам через __get

    Если вы получали значения свойств через магический __get(), то информация о типе терялась. Можно было использовать дополнительные теги @var или @property, но не всегда это спасало. Теперь можно указать всё через метаданные.



    Автодополнение ключей в объектах, реализующих ArrayAccess

    Метаданные поддерживали объекты ArrayAccess, но подсказывали только тип значений. Теперь возможные ключи тоже автодополняются.



    Кастомные точки выхода

    PhpStorm рассматривает функции типа die() и exit() или бросание исключений как завершающие выполнение. Но в приложениях могут быть более сложные точки выхода. Например, простая dd() или функция trigger_error с аргументом E_USER_ERROR.

    В PhpStorm 2020.1 можно помечать функции как точки выхода, и это соответствующим образом скорректирует анализ потока выполнения.



    Иконки для функций, переопределенных через метаданные

    Напротив объявлений функций, чье поведение было изменено с помощью override(), exitPoint() или expectArguments(), будет отображаться иконка. Нажатие иконки откроет файл .phpstorm.meta.php, в котором и меняется поведение, т. к. файлов может быть несколько.



    Иконки можно спрятать в Preferences/Settings | Editor | General | Gutter Icons.

    Машинное обучение для сортировки списка дополнений


    Добавили ранжирование вариантов автодополнения на основе машинного обучения.

    Как увидеть ML в действии?

    По умолчанию автодополнение с ML отключено. Не хотим, чтобы роботы лишили нас работы! Чтобы включить, надо зайти в настройки Preferences/Settings | Editor | General | Code Completion и включить опции Rank completion suggestions based on Machine Learning и PHP.

    Если еще включить опцию Show position changes in completion popup, то тогда в списке автодополнения будет показано, как именно изменился порядок элементов.



    Мы планируем предотвратить восстание машин продолжить работу в этом направлении в следующих версиях.

    Новые инспекции


    Приватное свойство может быть локальной переменной

    Определение свойства будет подсвечено, если оно используется только в одном методе и сразу же в нем перезаписывается. Чтобы исправить, можно вызвать квик-фикс Alt(⌥)+Enter “Replace property with local variable”.



    Лишняя инициализация свойства

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

    Неиспользуемый инициализатор будет подсвечен, и его можно удалить квик-фиксом Alt(⌥)+Enter “Remove redundant initializer”.



    Изменить тип свойства в PHP 7.4 в соответствии со значением по умолчанию



    Избыточный тернарный оператор

    PhpStorm подсветит тривиальные тернарные выражения и с помощью квик-фикса Alt(⌥)+Enter их можно заменить на более простые:



    Избыточная передача по ссылке

    Использование передачи по ссылке может привести к неожиданным последствиям, и это одна из причин, по которой Никита Попов предложил разрешить явную передачу по ссылке при вызове функций в PHP.

    Ну а пока, PhpStorm 2020.1 подсветит параметры объявленные как передаваемые по ссылке, но при этом не используемые в качестве таковых. Их можно безопасно удалить квик-фиксом Alt(⌥)+Enter.



    То же самое будет работать и для массивов со ссылкой в foreach-цикле:



    Удалить лишний PHPDoc, в котором только объявление типов теперь тоже довольно просто благодаря соответствующему квик-фиксу.



    Правда, по умолчанию инспекция стоит на уровне Info, то есть подсвечивать не будет. Если вы хотите, чтобы лишние блоки PHPDoc подсвечивались, то для инспекции Redundant PHPDoc comment в Preferences | Editor | Inspections установите уровень Weak Warning или выше.

    Обновленный рефакторинг “Move method”


    Иногда может быть необходимо перенести метод в другой класс. Если этот метод используется много раз в коде проекта, то PhpStorm может тут помочь.

    Раньше сначала нужно было сделать метод статическим, а потом уже вызвать еще одно действие, чтобы перенести его. В PhpStorm 2020.1 рефакторинг “Move method” переработан в одно атомарное действие. Убрали лишние шаги и попапы, и всё делается за один раз.

    Наведите курсор на метод и нажмите F6 (или Ctrl+T, 3). Затем выберите целевой класс и всё готово.



    Чтобы посмотреть все доступные рефакторинги, можно нажать Ctrl+T в любом месте кода.

    PHP Debug in HTTP Client


    Теперь, чтобы выборочно включать отладку, не нужно возиться с параметрами запроса или ставить расширение в браузере. Достаточно создать HTTP-запрос в файле .http и отправить его командой PHP Debug, которая доступна в меню Alt(⌥)+Enter или по нажатию иконки. В результате к запросу будет автоматически добавлена кука XDEBUG_SESSION.



    И еще несколько мелочей для PHP


    @deprecated-элементы отображаются как зачеркнутые в Structure tree view
    Ctrl(⌘)+F12



    Подсветка совпадающих тегов <?php / ?>



    Прыжок к открывающей/закрывающей скобке

    Shift+Ctrl+M (⌃+M)



    Кастомизация Lexer для Twig

    Иногда может понадобиться изменить символы тегов для шаблонов Twig, например если используется еще и Angular, у которого такой же синтаксис.
    Сделать это можно в настройках Preferences/Settings | Languages & Frameworks | PHP | Twig.

    IDE


    Продвинутый корректор правописания и грамматики Grazie


    В PhpStorm из коробки включен плагин Grazie, которые проверяет текст не только на орфографические ошибки, но также на грамматику и стиль. Причем поддерживаются 16 языков, и все проверки выполняются локально без отправки ваших данных куда-либо.



    По умолчанию проверки включены для Markdown-файлов.
    Можно включить их также для всех строковых литералов, комментариев, блоков PHPDoc и сообщений коммитов.

    Для PHP включить можно в Settings/Preferences|Editor | Proofread | Grammar.

    Режим LightEdit


    Иногда бывает нужно быстро посмотреть/поправить файл и открывать для этого целую IDE кажется слишком, но привычную подсветку и функции иметь хочется. Именно для таких случаев мы работаем над легковесным режимом LightEdit.

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



    JetBrains Mono — шрифт по умолчанию




    Режим Zen


    Новый режим сочетает в себе Distraction Free и Fullscreen для глубокого погружения в код.
    View | Appearance | Enter Zen Mode



    Интерфейс


    Разделение окна терминала


    Вместо открытия новых вкладок и переключения между ними, теперь можно разделить экран и открыть несколько сессий в одной вкладке. Для этого из контекстного меню терминала выбрать Split Horizontally / Vertically.



    Тема IntelliJ Light

    Светлая тема немного обновлена и унифицирована, чтобы выглядеть одинаково на всех ОС, а ее название сменилось на IntelliJ Light.

    Кастомизация статусбара

    Из контекстного меню можно выбрать, какая информация будет на нем отображаться.



    Конфигурация


    Унифицированная конфигурация SSH


    Раньше, если SSH-подключение переиспользовалось в деплойменте, Remote-интерпретаторе или SSH-терминале, его каждый раз приходилось конфигурировать заново.

    Теперь все SSH-подключения можно добавлять/редактировать в разделе настроек Preferences/Settings | Tools | SSH Configuration, а затем использовать их многократно там, где они нужны.



    Изменился путь к конфигам IDE


    Например, на macOS:
    - ~/Library/Preferences/PhpStorm2019.3
    + ~/Library/Application Support/JetBrains/PhpStorm2020.1


    Подробнее в хелпе.

    Кастомный путь для сохранения Run-конфигураций


    Раньше Run-конфигурации хранились в папке .idea, которую многие полностью добавляют в .gitignore (лучше вот так). Теперь можно выбрать любой путь и расшарить Run-конфигурацию с коллегами через систему контроля версий.

    Может быть особенно удобно при онбординге новых сотрудников: стянул проект, открыл в PhpStorm, запустил одной кнопкой.

    Чтобы сделать это, в диалоге Run/Debug-конфигурации нужно отметить опцию Store as project file, а по нажатии шестеренки можно выбрать желаемый путь в проекте.



    Контроль версий


    Новый Commit


    Окно Commit доступно в немодальном режиме и отображается слева. Таким образом оно не блокирует работу над другими файлами во время подготовки коммита, а на экране помещается больше информации об изменениях.

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

    Включается опцией Use non-modal commit interface в Preferences / Settings | Version Control | Commit.



    Улучшения для работы с ветками Git


    В нижнем правом углу окна IDE указана текущая ветка Git. Если нажать на нее, то откроется окно VCS | Git | Branches.
    Здесь добавили поле для поиска. Кнопка Refresh обновляет список remote-веток. И для каждого коммита добавлен индикатор: входящий (синий) или исходящий (зеленый).



    Переработан интерактивный Rebase


    Git Rebase позволяет переписать историю коммитов. Теперь можно быстро избавиться от «временных» коммитов, поправить сообщение или порядок коммитов. Конечно, всё это можно сделать и из консоли вручную, но PhpStorm позволяет тут же смотреть, что было изменено в том или ином коммите.

    Чтобы начать, в истории коммитов нужно выбрать желаемый базовый коммит и из контекстного меню выбрать Interactively rebase from here.



    Инструменты БД


    PhpStorm включает в себя почти все возможности DataGrip «из коробки», так что можно посмотреть обзор релиза DataGrip 2020.1 от наших коллег.

    Веб


    И, как всегда, все обновления из WebStorm 2020.1 тоже входят в PhpStorm.

    Полный список изменений можно найти в очень больших release notes.

    Обзор релиза можно также посмотреть на странице “What’s new” и если у вас всего несколько минут, то вот короткий ролик (на английском) с демонстрацией главных фич релиза:



    А на этом всё на этот раз. Спасибо, что дочитали до конца! Будем рады вопросам, пожеланиям, баг-репортам и просто мыслям в комментариях.

    Берегите себя!
    Ваша команда JetBrains PhpStorm
    JetBrains
    Делаем эффективные инструменты для разработчиков

    Комментарии 137

      +7
      Немодальное окно коммита это супер, спасибо.
        +2

        Да, прямо бальзам на сердце.

        +3
        Очень прошу, не делайте такую скорость анимации, в глазах рябит
          0
          Принял, учту
          +2
          ML — очень интересно. Надо попробовать. Вы собираете какие-то данные или оно только локально работает и ничего никуда не отсылает?

          И еще, вы планируете сделать отключение подсветки в phpdoc одной галкой, без стрданий с цветовой схемой, которые все равно не полностью убирают подсветку (так и не получилось убрать для @ protperty)?
            +1
            Вы собираете какие-то данные или оно только локально работает и ничего никуда не отсылает?

            Сам ML работает исключительно локально.
            Анонимизированные данные собираем только, если вы включили это явно в Preferences | Appearance & Behavior | System Settings | Data Sharing.

            И еще, вы планируете сделать отключение подсветки в phpdoc одной галкой, без стрданий с цветовой схемой, которые все равно не полностью убирают подсветку (так и не получилось убрать для @ protperty)?

            Галку, к сожалению, пока не планируем, потому что есть трудности с реализацией.
            Для @ property планируем, есть тикет, проголосовать можно вот тут youtrack.jetbrains.com/issue/WI-50427.
            +5
            А не подскажете, можно ли как-то сделать возможность указывать в phpdoc только бросаемые из метода исключения, но при этом не перечислять в обязательном порядке еще и все его параметры (которые уже и так явно типизированы в объявлении)?
              +2
              Вы хотите, чтобы при генерации PHPDoc для метода не создавались @param — правильно вас понял?
                +2
                И чтобы IDE не подсвечивала такой блок как неполный.
                  +1
                  Для типизированных параметров это уже работает. В настройках инспекции «PHPDoc comment matches function/method signature». Есть галочка «Allow missing parameters with type hints». В случае если галка проставлена PhpDoc не будет подсвечиваться как неполный
                  +1
                  Да и как уже заметили, чтобы не было подсветки блока при их отсутствии
                    +4

                    Не создавать и не подсвечивать в случае отсутствия @params и @return, если они
                    типизированы не как массивы, в силу понятных причин.

                      +1
                      Отвечу за square. Такую фичу давно жду.
                        +1
                        Присоединяюсь к пожелаюнию. Часто нужно создавать полный док, в котором куча дублирующей информации и только одна полезная строка, что бросается исключение.
                        0
                        Касательно генерации PhpDoc без лишней информации есть тикет вот такой. Правда он в статусе TBD пока что, но можно в комментариях высказать свои соображения как раз. По поводу подсветки ответил в комменте
                          0

                          Пока нельзя: https://youtrack.jetbrains.com/issue/WI-38844. Проблема пока что находится в стадии “to be discussed” — можете проголосовать за нее или прокомментировать.

                          0

                          Круто, только после обновы сломались все плагины работы с redis)

                            0
                            Подскажите, как именно сломались?
                              0
                              Плагин Iedis не реагирует с ошибкой в бэктрейсе
                              java.lang.NoSuchFieldError: DataSource

                              А плагин Redis вроде пытается что-то сделать, но не показывает никаких данных и в бэктрейсе ошибка другая
                              java.lang.NoSuchFieldError: Property_braces

                              Ошибки отправлю в соответствующий багтрекер разработчиков плагинов, но до обновы они оба работали.
                                +1

                                Про Ledis: это сторонний плагин — можете сообщить об ошибке автору, ссылка на его трекер: https://codesmagic.myjetbrains.com/youtrack/issues/I2.
                                Про Redis: плагин также сторонний, он должен скоро обновиться и надеемся что ошибка исчезнет. Сейчас плагин в состоянии “The plugin update is pending JetBrains approval”.

                            +1
                            Отличный релиз, спасибо.

                            Есть ли возможность вынести работу с базой в отдельное окно, при этом не устанавливая отдельно ДатаГрид?
                            Как-то включить оконный режим, чтоб список таблиц и сами таблицы открывались в одном отдельном окне?
                              0
                              Попробуйте view mode = window
                              image
                                +3
                                Это понятно, суть в том, что хотелось бы, чтоб таблицы тоже в этом окне открывались, а не окне редактора кода:)
                                  +1

                                  Это, к сожалению, невозможно.

                                  0
                                  Можно сразу в тему спрошу. В PHPStorm пользуюсь схемой раскладки для NetBeans. В DataGrid такую не нашел и не понятно как сделать. Есть такая возможность?
                                    0

                                    Насколько я понимаю, DataGrip не собирается бандлить эту схему. Есть только такой вариант: https://youtrack.jetbrains.com/issue/DBE-2631.

                                      0
                                      Спасибо, скачал keymap. Но потом открыл чтобы импортировать и нашел возможность поиска плагинов keymap-типа, там скачал для NetBeans. Я удивлен, наверное, это было добавлено в последней 2020.1 версии.
                                  0
                                  Берете вкладку с таблицей и перетягиваете за пределы окна phpstorm
                                  +1

                                  У вас есть какие-то планы или новости насчёт аннотаций для generic'ов?
                                  Я работаю в команде как раз с тем чуваком, что запилил их в PHPStan. И, естественно, мы их часто используем. Только из-за полезных в принципе аннотаций кодить стало тяжелее — IDEA теряет типы.

                                    +3
                                    Проблему понимаем. Если исследование Никиты выльется в полноценный RFC, то тогда все понятно.

                                    А с вариантами от PHPStan и Psalm есть нюансы, поэтому мы наблюдаем и думаем, что и как можно сделать.
                                    0

                                    Дико извиняюсь, местами скрины не те приложены. Не могли бы исправить по возможности?

                                      0
                                      Пересмотрел, вроде все те. Например, какие?
                                        0

                                        Автодополнение в секциях autoload(-dev) — другая секция
                                        Создать новый тест для класса — класс соуса, а не шаблон теста

                                          0
                                          Похоже это проблема мобильной версии хабра. С пк все ок и даже анимированное.
                                        0

                                        Почему-то в 2020.1 переход через Ctrl+click по методу открывает файл с методом в вкладке, но курсор оставляет в том месте открытого файла (с нужным методом), где он был ранее или на первой строке, если файл не был открыт ранее. Предыдущие версии скролили файл до нужного метода. Бага (но в трекере не нашел), какая-то настройка?
                                        (номер билда не подскажу, помучился и удалил)

                                          0
                                          У меня все работает.
                                          version
                                          PhpStorm 2020.1
                                          Build #PS-201.6668.153, built on April 13, 2020
                                          Licensed to ****
                                          Subscription is active until November 16, 2020
                                          Runtime version: 11.0.6+8-b765.25 amd64
                                          VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
                                          Linux 5.3.0-46-generic
                                          GC: ParNew, ConcurrentMarkSweep
                                          Memory: 1923M
                                          Cores: 8
                                          Registry: run.processes.with.pty=TRUE, debugger.watches.in.variables=false
                                          Non-Bundled Plugins: com.markskelton.one-dark-theme, com.wakatime.intellij.plugin, net.seesharpsoft.intellij.plugins.csv, de.espend.idea.php.toolbox, de.espend.idea.php.annotation, fr.adrienbrault.idea.symfony2plugin
                                          Current Desktop: KDE
                                            0

                                            Не воспроизводится на нашей стороне и нет похожих репортов на трекере. Возможно проблема вызвана сторонним плагином: попробуйте отключить все скачанные. Это делается через Settings | Plugins > кнопка шестеренки > "Disable All Downloaded Plugins".

                                            0
                                            1. После обновления стало как-то совсем печально тормозить. Неужели так трудно не вешать основной поток индексацией подсказок? Ваши мелкомягкие конкуренты умеют это лет 30 как.
                                            2. Какой идиот придумал молча заменять неразрывный пробел (правый альт + пробел) на обычный? И вообще, научитесь как-нибудь не перехватывать правый альт, если на нём висят символы, не соответствующие левому.
                                            3. Человека, который придумал брать дерево папок для файлового диалога из кэша проекта, а не с диска, ждёт специальный восьмиэтажный котёл в аду.
                                              +2
                                              3. Человека, который придумал брать дерево папок для файлового диалога из кэша проекта, а не с диска, ждёт специальный восьмиэтажный котёл в аду.

                                              Кстати да. Уже привык постоянно жать кнопку обновить прежде чем искать нужную папку. До этого очень сильно дезориентировал этот кеш.
                                                +1

                                                Подтверждаю, лишний клик. Часто открываю мелкие проекты, поправить пару строк, уже в привычку вошло тыкать рефреш.
                                                Один раз ночью долго сидел и смотрел на древо папок, пытаясь глазами найти только что созданную директорию. Раз 10 перепроверил, перезапустил шторм…

                                                +1

                                                1) У вас тормозит только во время индексации или без нее тоже? Расскажите что конкретно и при каких обстоятельствах тормозит.
                                                2) На трекере нет похожих реквестов и, насколько я вижу, нет никакого процесса автоматизации замены пробелов. Можно перейти на наш багтрекер и описать проблему в деталях.
                                                3) Да, сам страдаю. Судя по всему, диалог открытия файлов будет в скором времени обновлен и мы надеемся на то, что проблема больше не будет происходить: https://youtrack.jetbrains.com/issue/IDEA-166961 > https://youtrack.jetbrains.com/issue/IDEA-101218

                                                  0
                                                  У меня после апгрейда с 2019.3.4 (ЕМНИП) на 2020.1 начал подтормаживать клавиатурный ввод — почти незаметно, миллисекунды или десятки миллисекунд, но бесит, т.к. немного похоже на терминал на далекий сервер с не особо коротким пингом. Подсказки тормозят заметнее, и т.к. полагаюсь на них при быстром вводе, тормоза иногда сбивают с толку. Заметно даже тогда, когда нет фоновых процессов типа индексации. Новый MacBook Pro в почти полном фарше, 32Gb RAM, SSD, Catalina 10.15.4. На Ubuntu 18.04 с 2020.1 такого не замечаю.
                                                    +1

                                                    Хм, к сожалению, не припоминаю похожих проблем на маке. Только проблемы с 4k/внешними дисплеями типа https://youtrack.jetbrains.com/issue/JBR-526 — но они и до 2020.1 были. Если у вас внешний монитор — попробуйте его отключить.
                                                    Попробуйте также поменять Antialiasing в Preferences | Appearance & Behavior | Appearance на Greyscale (https://youtrack.jetbrains.com/issue/IDEA-238301).

                                                      0
                                                      Знаете — помогло. В основном сработало переключить Antialiasing в IDE, в Editor пока оставил Subpixel, смена там на Grayscale особо ничего не меняла. Поработаю и посмотрю, как дальше пойдет. Это новая опция в 2020.1?
                                                        0

                                                        Не, было доступно давно.

                                                0
                                                Поддержка composer.json
                                                А это всё можно научить запускаться изнутри Докера? Т.е. когда composer установлен в свой контейнер, а на хосте его нет.
                                                  +2
                                                  Да. В настройках Composer выбрать Remote Interpreter и там создать новый CLI From Docker.
                                                    +1

                                                    Давно можно:
                                                    image

                                                    0

                                                    В 2019 ставил триал и только начал привыкать, как отвалилось автосохранение скрипта.


                                                    Выглядело так: обычно Cmd+S нажимать не надо, все всгда сохранялось автоматом. А тут вдруг рраз — и внесенные в код изменения не учитываются.
                                                    Потратил час на отладку, уже начал считать себя кретином, как случайно по старой памяти тыкнул Cmd+S и изменения самым волшебным образом учлись.
                                                    Это такой воспитательный прием? Только в триалке, или в Шторме вообще?

                                                      0

                                                      Автосохранение настраивается в разделе Synchronization в File | Settings | Appearance & Behavior | System Settings. По умолчанию файл автосохраняется при смене фокуса из окна PhpStorm в любое другое. Различий между триальной и полной версией в этом плане нет. Если вы на маке и вы переключаетесь из IDE в другое приложение через нотификации — то возможно это https://youtrack.jetbrains.com/issue/IDEA-236432.

                                                        0

                                                        Настройки были дефолтные. Переключение между программами Cmd+Tab. На вирусы проверен, в розетку включен, зеленый огонек горит, интернет есть.

                                                          0

                                                          Больше предположений нет — надо смотреть детальнее: что за скрипт, где хранится, как проверяются изменения и прочее. Чтоб не засорять комментарии — лучше либо написать нам на трекер https://youtrack.jetbrains.com/newIssue, либо создать тикет через Help | Contact Support.

                                                      0
                                                      ML круто конечно, но есть вопросы:
                                                      — настройки с 2019.3 не умеют импортироваться? Видел что там новый формат какой-то сделали с 2020, но в итоге после обновления в toolbox настроек моих 0

                                                      — зачем-то поменяли цветовую схему? Переменные без жирного текста стали (решается ручным переносом схемы через импорт, см пункт 1)

                                                      — появились баги с рендером шрифтов, местами какие-то глитчи на буквах в списке файлов и менюшках, ожидается вообще фикс или ждать 2020.3? (в вашем трекере висит репорт похожий, но удивлён что это в релиз попало)
                                                        0

                                                        1) Умеют и должны. У вас, случайно, не кастомизированы системные настройки IDE? Пока что я нашел только 2 похожие проблемы: https://youtrack.jetbrains.com/issue/IDEA-237672 + https://youtrack.jetbrains.com/issue/TBX-4507, но они не в точности повторяют вашу. Поэтому было бы здорово если бы вы зарепортили эту проблему отдельно на нашем трекере.
                                                        2) Какую цветовую схему вы используете (можно посмотреть в File | Settings | Editor | Color Scheme | PHP) и в каком конкретно случае переменные не жирные? Пример дефолтной схемы, где видны переменные выделенные жирным:

                                                        3) Похоже на https://youtrack.jetbrains.com/issue/WI-52271 > https://youtrack.jetbrains.com/issue/JBR-2264. Проблемой занимаются.

                                                          0
                                                          1) В idea.properties только «editor.zero.latency.typing=true», на .vmoptions есть много разного (https://pastebin.com/jN22fvUw). Больше ничего не трогал, ide из toolbox стоит. С webstorm проблема такая же, там настроек поменьше стоит. Первая ссылка не очень похожая, вторая ссылка — 404.

                                                          2) Default (менял только синеватый фон на белый в php и всё).
                                                          К примеру разница вот (делал для webstorm, но ситуация аналогичная и в phpstorm — шрифт один и тот же, сглаживание одинаковое, ну и глитчи на табах и номерах строк хорошо заметны)
                                                          image

                                                          3) Да, очень похожие баги, из-за него в целом и пришлось откатиться (хотя настройки руками тоже не хочется переносить).
                                                            0

                                                            1) idea.properties выглядит ок. Если реально настройки не импортировались — надо смотреть в индивидуальном порядке. За 2 дня пока ни одного такого же репорта. Можно написать нам через Help | Contact Support.
                                                            2) Попробуйте изменить схему в File | Settings | Editor | Color Scheme на "Classic Light". Вот похожий репорт: https://youtrack.jetbrains.com/issue/IDEA-237239


                                                            Естественно, когда будет время и желание протестировать версию 2020.1 вновь :)

                                                              0
                                                              Это немного иронично, но после переходов 2019.3 → 2020 → 2019.3 → 2020 у меня пропала менюшка с настройками. По хоткею тоже не открывается, поэтому проверить пункт 2 я не могу физически:
                                                              image
                                                              Вспомнил что на экране выбора проекта есть менюшка ещё с настройками — оттуда зашёл. Да, слетела тема на Intellij Light и судя по тому что пропали все пути моих серверов в меню Delpoyment, то проблема видимо в том, что настройки вообще не подтянулись (хотя правила для языка, которые я импортировал в 2019.3 ещё выбраны и в 2020, но возможно это через проект как-то подтянулось). В общем разбираться со всеми этими багами в рабочее время как-то не очень хочется, очень обидно видеть такие релизы (с 2017 версии никогда не было проблем и обновлялся в день релиза).
                                                                0

                                                                Да, странно. Рад был бы сказать в чем дело, да не сталкивался с таким еще. Такое надо в индивидуальном порядке смотреть, к сожалению.

                                                                  0
                                                                  Попробовал обновится спустя месяц — настройки появились, часть из них даже синхронзировалась, но шрифт с Menlo слетел на Jetbrains Mono — это так задумано или баг завести?
                                                                    0
                                                                    Судя по всему задумано т.к. у меня тоже шрифт слетел на Jetbrains Mono
                                                                      0

                                                                      Так было задумано. Можете вернуть шрифт обратно на Menlo: в будущем мы не будем менять пользовательский шрифт без спроса (надеюсь): https://youtrack.jetbrains.com/issue/IDEA-237064#focus=streamItem-27-4083457.0-0

                                                                0
                                                                geo anal — это, конечно, мощно =)

                                                                </irony>

                                                                // простите, не смог удержаться
                                                            0
                                                            До версии 2019.1 включительно запускал php скрипт в консоле через Shift-Ctrl-X, который выводил данные в цвете:
                                                            print "\033[0;31mText\033[0m";

                                                            В последних версиях, запуская скрипт по двойному Ctrl (Run Anything), потерялся цвет и текст ограничивается 80 символами с переносом на новую строку.

                                                            Такое поведение чем-то лечится?
                                                              0

                                                              Передача цвета работает нормально на дефолтных настройках: https://i.gyazo.com/44f453cde7f34e48f7a484db2f1f2705.mp4. Чтобы разобраться в проблеме необходимо больше информации о вашей системе.
                                                              Насчет 80 символов — да, проблема есть, можете попробовать решение описанное здесь: https://youtrack.jetbrains.com/issue/WI-47811#focus=streamItem-27-4072493.0-0

                                                                0
                                                                Предложенное вами решение, выключение run.anything.use.pty, помогло.
                                                                Причем изменение цвета текста также стало работать.
                                                                Спасибо.

                                                                Windwos 7x64
                                                                  0

                                                                  Всегда пожалуйста!

                                                              0
                                                              Кучу всего понадобавляли, а старые баги так и висят неисправленными:
                                                              1. Баге 2 года: невозможность обновить список команд Laravel Artisan в Command Line Tools — нужно пересоздавать тулзу каждый раз. При создании — все ок, при обновлении существующего — ошибка. После того как меня вчера бомбануло — исправили методом выпиливания поддержки 2го Symfony, хотя я уверен что там просто по-разному обрабатывались настройки тулзы при создании и при обновлении т.к. при создании можно выбрать на базе какой версии Symfony работает тулза. При обновлении скорее всего эта настройка игнорировалась. Самое прикольное что какое-то время более 2х лет назад все работало прекрасно, но потом довольно быстро это сломали. Тестирование на высоте.
                                                              2. После выпиливания удобного Command Line в пользу неудобного Run Anything вылезла бага с отображением кириллицы в окне Run. Баге 9 месяцев и 3 мажорные версии за это время вышли уже.

                                                              Ну и куда же без новых багов? Да таких что хочется кого-то уволить за то что недотестировали (менеджеров, например). Первым с чем я столкнулся после обновления — эпичный по своей вредности баг: отсутствие контекстного меню при правом клике. Я не поверил своим глазам и несколько раз перезагрузил IDE и даже проверил мышку. А когда в багтрекере нашел багрепорт об этом — первыми кто предложил вариант исправления были именно пользователи… Решение — переименовать группы в настройках External Tools и External SSH Tools. По умолчанию обе группы называются «External Tools», что после какого-то изменения в IDE привело к конфликту названий. Эти названия используются в главном меню в разделе Tools. Прикол в том, что никто, похоже, не додумался проверять не конфликтуют ли названия групп в External Tools и External SSH Tools между собой и с другими названиями в разделе Tools.
                                                              Идем дальше — это не еще не всё. Решение — переименовать группы в External Tools и External SSH Tools. Проблема номер 1: контекстное меню не работает, т.е. нельзя выбрать группу и вызвать на ней контекстное меню чтобы отредактировать название (кстати, даже тут JetBrains отличились — редактировать название группы в последствии оказалось невозможно. Там просто нет такого функционала. Ни через контекстное меню, которого там вообще нет при клике на группе, ни как-то иначе.). Чешем репу, идем в баг трекер и ругаемся, в надежде на подсказку. Способ таки подсказали. Опять пользователь, а не разработчики.
                                                              Проблема номер 2: чтобы переименовать группу нужно отредактировать КАЖДЫЙ Tool в группе, заменив название группы (facepalm от такого юзабилити хочется выдать Таносовской перчаткой бесконечности тому, кто такое допустил). Вот представьте себе что у вас ну хотя бы 30 тулов там. И нужно каждый отредактировать. Увлекательное же занятие, правда? Ведь нам больше нечем заняться в рабочее время, кроме как борьбой с багами и «фичами» IDE! И это не EAP, а релизная версия!!!!.. А знаете что в этом самое прикольное? Я нашел файл, где хранятся эти настройки. И там красивый такой XML в котором все тулзы сгруппированы в групповой тэг с атрибутом что-то типа name, т.е. нужно отредактировать только 1 строку чтобы переименовать группу. Почему этого функционала не добавили в IDE изначально — я не понимаю. Юзабилити на небывалой высоте.

                                                              Ну и на последок стоит поднять одну старую тему, которая так же есть в багтрекере.
                                                              Была когда-то такая полезная функциональность — Command Line (не путать с терминалом!). Она была довольно удобной, хотя и имела свои баги, пусть и не критичные. Удобной она была в основном тем, что там была строка ввода команды, которая умела подсказывать команды и их параметры из настроек Command Line Tools. Но уже год как её выпилили заменив на Run Anything. Абсолютно неудобный и глючный инструмент. В итоге я сейчас многие команды запускаю из терминала, без подсказок и прочих удобств. Вот почему:
                                                              1. 9-месячная бага с кириллицей — я вынужден в своих командах выводить исходные данные, которые получаю из внешних источников. Там часто кириллица. И она нечитаемая.
                                                              2. Каждая вызванная команда выполняется в окне Run полностью стирая то, что выводила предыдущая команда. Т.е. я не могу даже сравнить результаты выполнения 2х команд если они запущены последовательно. Причем если запустить параллельно — открывается дополнительная вкладка. Не нашел настройки как это исправить.
                                                              3. Ввод команды в Run Anything абсолютно не удобный. Вот представьте что у вас есть команда с кучей аргументов и опций. Причем аргументы — это ID записей в БД, которые вы не помните наизусть, а названия опций в Run Anything вообще не подсказываются. Т.е. чтобы настроить команду нужно лезть в ее класс и смотреть опции или лезть в БД или еще куда-то чтобы найти нужные ID. Проблема в том, что при клике куда-либо кроме окна Run Anything — оно закрывается. Это вообще эпичнейший по своей сути бред.
                                                              4. Команду нельзя изменить перед перезапуском. Нужно каждый раз вызывать Run Anything со всеми его косяками.
                                                              Так что привет терминал, прощай автодополнение. Run Anything я все же использую, но только для простых одноразовых команд.

                                                              Простите. Пригорело.

                                                              Как мне кажется пора притормозить с новым функционалом и доделать/исправить/переосмыслить текущий. Написать побольше автотестов в конце-концов чтобы не вылезали такие эпичные баги как с группами в External Tools и External SSH Tools. Мне и некоторым другим пользователям не нравится как развивается IDE в последние год-полтора. Если раньше от версии к версии были видны качественные улучшения с приемлемым количеством багов, которые в большей части исправлялись минорными версиями, то сейчас качественные улучшения уже не так сильно влияют на разработку, но зато добавляются довольно критичные баги и меняется полезный функционал на относительно бесполезный. Поверьте, если вы выпустите мажорную версию в которой будут только исправления багов, улучшение стабильности и доработки текущего функционала — пользователи будут вам только благодарны. IDE уже 2 года назад была прекрасна, не надо ее убивать вредоносной погоней за новым функционалом.
                                                                0
                                                                А когда в багтрекере нашел багрепорт об этом — первыми кто предложил вариант исправления были именно пользователи…

                                                                Это просто пользователь полез вперед и вместо дать линку на существующий тикет или оставить это все на JB сапорт описал все сам своими словами (приходится, ибо довольно часто другие пользователи попросту не могут прочитать решение в другом тикете или даже в комментарии-другом выше того что они пишут...). Если бы не пользователь то JB сапорт отписались бы сами, просто чуток позднее.


                                                                Плюс время: тот комментарий то был написан в полночь по местному времени а JB сапорт в то время очень редко активен, по понятным причинам.


                                                                В общем, не приписывайте этот конкретный момент на плохой сапорт: у них кроме чтения баг трекера (дев тикеты) есть и собственно сапорт тикеты, форум, StackOverflow и им подобные сайты где тоже нужно проверять и отвечать.

                                                                  0
                                                                  Я обычно ищу багрепорты и просматриваю несколько, но ищу в ветках PHP Storm или Web Storm. Поэтому первый багрепорт не видел — он был для другой IDE (IntelliJ IDEA 2020.1 Snapshot (Ultimate Edition) EAP версия).
                                                                  Кстати, о качестве релизной версии продукта: первый багрепорт был создан 2 месяца назад в ходе EAP и он дожил до релиза PHP Storm и, видимо всех других IDE где есть этот функционал. Не, я понимаю, что это не рекорд (мои примеры выше — 9 месяцев и 2 года покруче будут), но блин, а нафига тогда EAP? Зачем армия бесплатных страдальцев напарывается на все возможные и невозможные баги и репортит их? Я тоже был среди них, хоть у меня и полноценная лицензия на руках, но EAP, кажется 2019.1, отбил у меня желание страдать — пользоваться было невозможно, весь редактор был в ошибках. Тем не менее EAP меня догнал… в релизной версии =(
                                                                  Сапорт-то нормальный чаще всего. Но далеко не всегда.
                                                                  +2

                                                                  1) https://youtrack.jetbrains.com/issue/WI-43544 — её пофиксили, но если вы не довольны решением — то было бы полезнее об этом написать именно там, чтобы вас мог услышать/прочитать разработчик, занимавшийся проблемой.
                                                                  2) https://youtrack.jetbrains.com/issue/WI-47811 — да, нам жаль что проблема до сих пор не решена.
                                                                  3) Справедливости ради, это решение было предложено нашими сотрудниками: https://youtrack.jetbrains.com/issue/IDEA-233252#focus=streamItem-27-3991288.0-0. https://youtrack.jetbrains.com/issue/IDEA-232070 — Проблема действительно реальная и от нее может как следует пригореть, и я сам, честно говоря, удивлен что 1) её допустили 2) она до сих пор не починена.
                                                                  4) Про run anything — да, камень преткновения. FYI, репорт про отсутствие истории — https://youtrack.jetbrains.com/issue/WI-48014. Лично мне тоже стыдновато, что проблема до сих пор не решена. Постараюсь поднять её вновь на очередном обсуждении.
                                                                  5) “названия опций в Run Anything вообще не подсказываются” — можете привести пример? Например в той же artisan console подсказки аргументов выводятся.

                                                                    0
                                                                    1) youtrack.jetbrains.com/issue/WI-43544 — да, да, та самая таска. И это я тот психанутый, кто этот полуразложившийся труп вчера пнул. Мне в принципе все-равно как ее исправили, лишь бы работало. Просто способ лечения немного странный использован — «У пациента стрела в колене. Мы можем ее разломать и вытащить или отпилить ногу выше колена. Пилим ногу — так надежнее.» =)
                                                                    3) Я по поиску нашел только вот эту: youtrack.jetbrains.com/issue/WI-52284, дубликатом она стала позже. Оказалось что проблема куда старее.
                                                                    4) Ужасное решение на самом деле. Для тех, кто активно пользуется и разрабатывает консольные команды — это просто адище. Для примера — в этой версии исправили одно из не самых удобных решений подобного типа — окно VCS Commit, которое блокировало доступ к редактору. Вот с Run Anything примерно та же проблема. Я не имею ничего против этой функции в целом, но если она не заменяет собой столь критичный для многих функционал Command Line Tools полностью и без альтернатив.
                                                                    youtrack.jetbrains.com/issue/WI-48014 — спасибо, подписался и добавил вариант реализации, который, по идее, не слишком сложно реализовать будет.
                                                                    5) В коммандах Symfony и Laravel есть 2 типа передаваемых в команду данных: аргументы и опции.

                                                                    Аргументы подразумевают наличие значения и вводятся строго по порядку их объявления при этом не требуя вводить имя аргумента.
                                                                    Пример: artisan migrate path_to_migration_filde
                                                                    path_to_migration_filde — аргумент.

                                                                    Опции — это опциональные параметры, которые вводятся по имени, не имеют порядка ввода и чаще всего являются включателями чего-то, хотя могут и значение требовать.
                                                                    Пример: artisan migrate --step
                                                                    --step — опция.
                                                                    И не смотря на то что многие комманды в Run Anything все же подсказывают опции, но вот проблема в том, что кастомные команды этой привелегии лишены. Да и вообще при вводе команды хотелось бы видеть в том числе и описание агрументов и опций, зря мы их чтоли туда добавляем? Ато видны только значения по умолчанию и то неправильные.
                                                                    Пример:
                                                                    protected $signature = 'app:import_data
                                                                    {company_id=0}
                                                                    {building_id=0 : several values allowed, separator: coma. Example: 122,233}
                                                                    {--test : do not save data to db}
                                                                    {--no-notifications : do not send notifications to users}
                                                                    {--no-report : do not send report to office}';

                                                                    В Run Anything отображается что оба аргумента по умолчанию null. А ведь там четко указано что они по умолчанию 0. И никаких описаний, никаких опций. Мне реально проще в терминале вызвать такую команду, открыв его в отдельном окне, а класс с командой в редакторе, чем затыкивать Ctrl вызывая Run Anything по 100 раз.

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

                                                                    Теперь я буду поспокойнее — мой словесный понос до Вас долетел и есть надежда на светлое благоухающее будущее =)
                                                                      +1

                                                                      Спасибо за дополнение, проверю на выходных.
                                                                      Насчёт критики — всё ок: накипевшее надо изливать. Порой удачно подобранные слова помогают достучаться до разработчиков, к тому же многое из описанного вами — объективная и конструктивная критика. Всем бы терпения и желания подкреплять свои слова столь подробными примерами.

                                                                        0
                                                                        И снова я со своими реликтами =) В этот раз реликт можно отправлять в школу — 6 лет уже стукнуло: youtrack.jetbrains.com/issue/IDEA-124420
                                                                        Причем опять же не так сложно исправить — игнорируем стили в TODO окне и готово. Стили и не нужны там по факту — только глаза мозолят.

                                                                        Я определенно считаю что пора сделать перерыв в добавлении нового функционала и довести текущий до ума. Там похоже уже авгиевы конюшни багов и косметик накопились. Тем более к выходу PHP 8 надо бы устаканить IDE, ато посыпется всё как доминошки… не хотелось бы мне такого.

                                                                        Еще обратите внимание на вот эту багу: youtrack.jetbrains.com/issue/WI-51861
                                                                        Я не уверен что она проявляется у многих, но у меня начиная с 2020.1 она настолько постоянная что я уже перестал обращать на нее внимание вызывая подсказку комбинацией ctrl+p. В 2019.* она как-то пореже проявлялась. Потенциально бага может быть довольно вредоносной если ее появление будет массовым.
                                                                          0

                                                                          О TODO — согласен, старый баг. Не скажу, почему разработчик им не занимается: скорее всего занят другими, более приоритетными задачами.
                                                                          Насчет WI-51861: пока ни одного подобного случая не видели. Мы пытались воспроизвести проблему, но пока безуспешно. К сожалению, пока неясно что вызывает проблему и как её решить.
                                                                          Насчет "устаканивания IDE" — также согласен, но у разработчиков определенно свои взгляды на планирование. Разработчиков тоже можно понять: поддержку новых технологий надо вовремя добавлять в IDE. На каждый реквест "этому багу N лет" найдется "эта фича уже месяц как announced — когда поддержка?". Надеюсь что следующий релиз как раз будет ориентирован на повышение качества, нежели добавление новых фич.

                                                                            0
                                                                            WI-51861 определенно странный баг, скорее всего как-то связанный с моей системой или с Laravel (есть подозрение что фреймворк тут тоже играет роль). Я пока не могу проверить на рабочем компьютере из-за удаленки. Попозже дополню, если он присутствует и там. Но он определенно постоянный у меня и не зависит от настроек IDE.

                                                                            Новые фичи нужны, никто не спорит. И делать их куда интереснее, по себе знаю. Тем не менее баги имеют свойство размножаться и накапливаться. А потом сожрут разработчиков =)))

                                                                            Буду надеятся на багобойный релиз.
                                                                    0
                                                                    Категорически согласен с посылом автора. Так мило читать каждый раз про стопятьсот миллионов поддерживаемых новых технологий, когда в простейшем Find in Path результаты каждый раз выводятся в ведомом одному богу порядке. А благодаря гениальному интерфейсному решению это окно ещё и нельзя свернуть, ведь у него нет соответствующей кнопочки. (Кстати, развернуть на весь экран — тоже только мышкой за края, удобно.) Поэтому если ищешь по какой-то теме, а при этом ещё и лазишь в найденные результаты, получается отлично потренировать память, что уже просмотрел, а что ещё нет. Хотя казалось бы.
                                                                      0
                                                                      У Find in Path есть кнопка Open in Find Window, которая переместит результаты в tool window. А его можно как угодно сворачивать, и при желании откреплять в отдельное окно.
                                                                      Не совсем понял, в чем проблема. Можете показать на скриншоте?
                                                                    +1
                                                                    Попробовал HTTP-client — замечательно работает!
                                                                    Теперь можно не держать в браузере в закладках POST и GET онлайн генераторы, можно просто насоздавать файлов с нужными запросами, запускать их, редактировать и хранить, подключать к проекту, исключать, версионность — очень удобно. Это совсем не то, что раньше — собираешь запрос вручную, сбрасываешь коллегам по мессенджерам, выполняешь из браузера
                                                                    Неожиданное, но приятное дополнение.
                                                                      0
                                                                      А вы не пробовали Postman? Я все никак не могу с него слезть т.к. он очень удобен. Там как раз есть все о чем вы писали. А еще можно написать генератор конфигов для вашего API и импортировать их в Postman. Мобильщикам такой подход весьма по душе.
                                                                        0
                                                                        Нет, Постман не пробовал. Иногда есть какой-то объём работы, когда нужно варить запросы, обычно использовали что-то из интернета
                                                                        Терь вот и коллегам собираюсь показать, потому что PhpStorm все используют, а вот для http запросов — кто во что горазд.
                                                                        А Postman, возможно, очень хорош, но теперь, получается, для наших несложных целей он вроде как и ни к чему
                                                                          0
                                                                          В принципе если действительно не особо много запросов и они довольно простые, то нет смысла еще что-то другое использовать. Postman для меня еще удобен за счет того что запросы синхронизируются в облако и можно на разных компах использовать не заморачиваясь с импортом/экспортом и т.п. У меня уже довольно много проектов и все запросы в одной проге хранятся.
                                                                            0
                                                                            Вы знаете, всё же попробовал Postman — и он реально хорош. Стали использовать для возни с запросами и дебагом, хотя для атомарных тестовых запросов всё же используем встроенный в phpstorm функционал, удобно, что можно эти запросы заливать прямо в проект, версионить и это всё.
                                                                            Но постман прям очень хорош, спасибо за наводку
                                                                        0
                                                                        Помимо Postman есть замечательная Insomnia. Она очень богата на функционал.
                                                                        0
                                                                        Иногда PHPStorm не может засинкать связи обьектов и показывает что метод не найден. При этом он предлагает создать его, можно ли как то добавить пункт — указать где он лежит и чтоб шторм засинкал связи?
                                                                          0
                                                                          А можете пример привести? Потому что со слов не очень понятно.
                                                                            0
                                                                            image
                                                                              0
                                                                              это ларавелевская магия. такого метода там действительно нет. Я сейчас как раз пытаюсь с помощью своего плагина сделать эти комплишены удобоваримыми.
                                                                                0
                                                                                Именно так, в Laravel чертова куча вещей вызывается по через __call и динамически пробрасывается на зависимости объекта. Мы какое-то время назад сделали stub'ы с подсказками на наиболее часто используемые методы, остальные приходится вызывать по документации.
                                                                                  0
                                                                                  пользуюсь второй год laravel ide helper чтоб не изобретать велосипедов
                                                                                    0
                                                                                    он далеко не все проблемы решает
                                                                                0
                                                                                Проблема похожа на вот эту таску: youtrack.jetbrains.com/issue/WI-39168
                                                                                0

                                                                                Да, чаще всего можно, зависит от структуры объектов и вызова. Если всё просто, то можно делать нечто подобное:

                                                                                  0
                                                                                  хотелось бы без таких коментов обойтись :)
                                                                                    0

                                                                                    Надо тогда смотреть на проект поближе. К сожалению, из скриншота не ясна структура. Можете прислать больше скриншотов со связями объектов нам напрямую через Help | Contact Support.

                                                                                      0
                                                                                      Даже не стоит. В этом ларавеле частая магия с вызовом совсем других объектов через:
                                                                                      /** @mixin Builder */
                                                                                      class HasMany {
                                                                                      public function __call($method) { 
                                                                                        $this->builder->$method();
                                                                                      
                                                                                        return $this;
                                                                                      }
                                                                                      }

                                                                                      В итоге шторм видит метод из класса миксина(Builder) и думает что возвращается то, что возвращается из того миксина, а на самом деле возвращается экземпляр HasMany. В итоге шторм «теряет» настоящий тип. Это я еще не расссказал о чисто магических методах. Как раз сейчас пытаюсь сгенерить нормальные phpDocs для шторма.
                                                                                        +1
                                                                                        Лучше расскажите возможно ли в ближайшем будущем будет методы в phpDoc или где-нибудь еще обозначить как статическими так и не статическими? Чтобы они появлялись и в том и другом контексте. Очень много и такой магии в Laravel…
                                                                                          0
                                                                                          Не только в Laravel. Ещё есть FFI, где new/cdef/type и прочие являются одновременно и методами инстанса и статичными. Сейчас такое невозможно в шторме сделать, а значит стабы сейчас не до конца корректные.
                                                                                            0

                                                                                            Должно работать, попробуйте вызвать окно автозаполнения кода (ctrl+Space) дважды, как описано здесь: https://youtrack.jetbrains.com/issue/WI-28043#focus=streamItem-27-2954012.0-0

                                                                                              0
                                                                                              Работает конечно, но мало кто будет так жмакать.
                                                                                    0

                                                                                    Перестала работать опция


                                                                                    Keep ')' and '{' on one line true
                                                                                      0

                                                                                      Пожалуйста, приведите пример кода, можно скриншотом.

                                                                                        0
                                                                                            public function __construct(
                                                                                                DoctrineIssueRepository $issueRepo,
                                                                                                RedisProxy $redisGeneral,
                                                                                                ReadContentService $readContentService,
                                                                                                AbVariantsFetcher $abVariantsFetcher,
                                                                                                TimeZoneGroupRepository $timeZoneGroupRepo
                                                                                            ) {  <<<<<<<<<<<
                                                                                                $this->issueRepo = $issueRepo;

                                                                                        Выставлена опция, но по нажатию CMD+ALT+L — разносит на разные строки

                                                                                          0

                                                                                          Спасибо за код. У меня при таких настройках:

                                                                                          работает как надо:


                                                                                          Проверьте не включен ли "Enable EditorConfig support" в File | Settings | Editor | Code Style.

                                                                                            0
                                                                                            EditorConfig

                                                                                            Задан как Default. Выставлены галки Around separator и After Comma


                                                                                            В настройках кодстайла, в Function declaration parameters выставлены Align when multiline и Keep ')' and '{' on one line. Выставление всех четырёх проблему не решает.


                                                                                            Ситуацию исправляет замена Braces Placement -> in function declaration -> next line if wrapped на просто next line


                                                                                            Как-то архи-контринтуитивно.
                                                                                            И до обновления работало наоборот, емнип. Но могу и соврать.

                                                                                      0
                                                                                      А когда наконец поборите эту багу, которая ломает код?
                                                                                      Заголовок спойлера
                                                                                      image


                                                                                      Ну и отключите автоимпорт глобальных классов, функций и констант. Который приходится отключать просто на постоянной основе, т.к. «настройки для нового проекта» просто не работают? Да и вообще этот функционал вредит только.
                                                                                        0
                                                                                        Судя по видео ничего не сломалось. Всего лишь код был отформатирован, вынеся обращение к классу в блок `use`.
                                                                                        Как это называется, выключено `fully-qualified class names`, или как-то так.

                                                                                        PS: У себя попробовал твой код вписать и сделать реформат — всё норм. Блок `use` не создавался.
                                                                                          0
                                                                                          Судя по видео ничего не сломалось


                                                                                          Стыдно должно быть не знать язык, на котором пишешь)) Вначале должен быть определён declare, а затем уже use, а не наоборот. Иначе PHP упадёт с синтаксической ошибкой.

                                                                                          Как это называется, выключено `fully-qualified class names`, или как-то так.

                                                                                          Да, выключено. И надо включать всегда для каждого проекта. Чесслово, меня уже это достало)) Причём автоимпорт fqn этот не нужен от слова «вообще».

                                                                                          Даже если брать популярные ОС проекты, где ещё кроме зенда/ламинаса он используется?
                                                                                          1) Берём какой-нибудь симфони, так там дефолтные fqn оптимизации: github.com/symfony/symfony/blob/master/src/Symfony/Component/Finder/Finder.php#L607
                                                                                          2) Берём ларку — там по-старинке.
                                                                                          3) Берём… что? Да почти нигде не используется этот мешающий функционал.
                                                                                            +1
                                                                                            Я опираюсь на практический опыт с механической памятью. Еще ни одного проекта под руку не попадалось, где бы был прописан declare. Когда-то давно прочитал о нем, понял что мне это не надо и забыл. А когда понадобится, тогда и буду помнить.
                                                                                            И ничего постыдного в этом нет.
                                                                                            0
                                                                                            (deleted)
                                                                                            0

                                                                                            Ссылка на баг, если что: https://youtrack.jetbrains.com/issue/WI-44179. К сожалению, не могу сказать когда починят. Можно попробовать оставить комментарий с соответствующим вопросом.
                                                                                            Насчет настроек auto import в новых проектах: проверил — настройка работает. Правда она располагается немного в другом месте, но всё равно работает:

                                                                                            0
                                                                                            Лично меня немодальное окно коммита сильно напрягает. В нормальном окне виден список измененных файлов, действия производимые над коммитом (reformat, amend, etc.), также diff по выбранному файлу с быстрым «перекликиванием» выгружаемых данных.
                                                                                            А в немодальном окне этого нет. Приходится совершать множество дополнительных телодвижений. Например, мышкой выбрать нужный файл и ткнуть Ctrl+D (show diff). При этом, если нужно быстро переключиться на другой файл, то, как говорится, будь добр вначале закрой окно. Это крайне неудобно и не информативно.
                                                                                            К слову, сколько раз пытался найти в нем что-то хорошее — только что заметил мелкую «шестеренку» рядом с чекбоксом «amend», в котором доп опции можно выбрать. Неудобно до жути.
                                                                                            В общем, всё супер, кроме этого.
                                                                                              0

                                                                                              Чтобы быстрее открыть diff можно сделать либо двойной клик по файлу, либо нажать f7
                                                                                              С помощью f7 можно пройтись по всем изменения (как только заканчивается один файл, открывается другой)

                                                                                                0

                                                                                                Можно переключиться на старое окно коммита в File | Settings | Version Control | Commit: чекбокс "Use non-modal commit interface"

                                                                                                  0
                                                                                                  Спасибо. Я в старом окне работаю. Просто описал свои ощущения от не модальной версии (если не изменяет память, еев 2019 версии ввели).
                                                                                                    +1

                                                                                                    Ага, спасибо! По окну коммита два лагеря образовались, и каждый по своему прав :)

                                                                                                      0
                                                                                                      Так и есть. Мой коллега, в отличие от меня, в восторке от нон-модального окна)
                                                                                                    0
                                                                                                    Нет ли планов в будущем выпилить модальное окно? А то сейчас как временное решение мы переключимся, а потом бац и все

                                                                                                    Нельзя ли сделать опцию для помещения немодального окна обратно в окно version control? Наверное у меня специфический кейс, но у меня version control висит в виде окна на втором мониторе и удобно, что Local changes (и Shelf) в отдельном окне. Я могу смотреть одновременно и на них Local Changes c диффом и на код. Короче все то же самое, как раньше, но с добавленным полем для коммита вннизу Local changes

                                                                                                      +1

                                                                                                      По первому: пока нет, но не исключено в далёком будущем.
                                                                                                      По второму: попробуйте вариант из описания https://youtrack.jetbrains.com/issue/IDEA-231132, начиная с "Workaround"

                                                                                                  +1
                                                                                                  Спасибо за шикарный инструмент!

                                                                                                  У меня персональная радость — теперь при поиске по файлу выдает не только кол-во совпадений, но и текущую позицию. «Я джва года этого ждал».

                                                                                                    0
                                                                                                    Не планируется ли сделать возможность показывать предупреждение при обновлении, если какой-то из установленных плагинов не поддерживается в той версии, которую собираемся установить?
                                                                                                      0

                                                                                                      Можете пример привести? Обычно неподдерживаемые плагины просто отключаются в новой версии.
                                                                                                      Или вы вообще не хотите обновляться, если новые версии плагинов пока недоступны?

                                                                                                        0
                                                                                                        Да, именно так, я хочу иметь возможность увидеть, что не все плагины подтянулись до новой версии и подождать с обновлением
                                                                                                    0
                                                                                                    PHPStorm 2020.1 на macOS 10.15.3, в настройках автодополнения нет ML
                                                                                                    image
                                                                                                      0
                                                                                                      Странно, а напишите полный номер билда из PhpStorm | About PhpStorm
                                                                                                        0
                                                                                                        PhpStorm 2020.1
                                                                                                        Build #PS-201.6668.153, built on April 13, 2020
                                                                                                        Licensed to *****
                                                                                                        Subscription is active until April 7, 2021
                                                                                                        Runtime version: 11.0.6+8-b765.25 x86_64
                                                                                                        VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
                                                                                                        macOS 10.15.3
                                                                                                        GC: G1 Young Generation, G1 Old Generation
                                                                                                        Memory: 1750M
                                                                                                        Cores: 12
                                                                                                        Registry: run.processes.with.pty=TRUE, bigger.font.in.project.view=true, ide.balloon.shadow.size=0
                                                                                                        Non-Bundled Plugins: mobi.hsz.idea.gitignore, com.chrisrm.idea.MaterialThemeUI, net.seesharpsoft.intellij.plugins.csv, Magicento, com.magicento2.magicento2, BashSupport
                                                                                                        +1
                                                                                                        Может надо заинейблить плагин? Я тупо в поиске начал набирать «Machine...» и в окне плагинов я увидел, что он не заинейблен, заинейблил и вуаля!
                                                                                                          0
                                                                                                          спасибо, помогло!
                                                                                                          0

                                                                                                          Проверьте включен ли соответствующий плагин:


                                                                                                          Upd: ой, вижу что уже всё правильно посоветовали

                                                                                                          0
                                                                                                          1. Подсказки кода иногда стали фризить шторм секунд на 30. Вводишь например var_d или print_ и окно фризится
                                                                                                          2. В целом быстродействие открытия шторма и шага Prepare Workspace снизилось значительно
                                                                                                          3. В немодальном коммите не нашел «крестика» напротив изменений, чтобы быстро их отменить, как в старом во вкладке Local Change
                                                                                                          image
                                                                                                            0
                                                                                                            Обновил специально поиграться с composer, но странно при нажатии на лампочку куда бы я не тыкал, даже на устаревшие зависимости не появляются пункты Update all packages и Update package. Хотя если начать вводить версию то он действительно подтягивает список всех версий
                                                                                                              +1
                                                                                                              Новый Commit — спасибо, что дали возможность отключить данную опцию, попробовал использовать это в течении дня, не зашло от слова совсем + еще и бажное (при попытке закомититься говорит, что не может потому несколько ченджлистов выбрано, но выбран всего один, при этом есть невыбранные ченджлисты из другого проекта). Пожалуйста, не отключайте старый вариант, он уже как родной и работает хорошо и понятно.
                                                                                                                0
                                                                                                                Ребят, а может кто-то подсказать.

                                                                                                                Есть горячие кнопки на открытие/закрытие списка use в файле?
                                                                                                                  0
                                                                                                                  Фолдинг имеется в виду? Если да, то попробуйте Ctrl(⌘) + .
                                                                                                                    0
                                                                                                                    Ну фолдинг работает, если поставить курсов на use секцию. А было бы удобно — открыл файлд, нажал хоткей и открылась/закрылась use секция.
                                                                                                                      0
                                                                                                                      Ага, понял. А для чего это нужно? Пока не совсем понял зачем видеть, что внутри use?
                                                                                                                  0
                                                                                                                  Есть потребность писать конфиги эншибла для пхп-проекта из PhpStorma и использовать там джинжу. Но что-то не могу найти, как подключить нативную поддержку этого шаблонизатора, которая есть в PyCharm. Есть такая возможность?

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

                                                                                                                  Самое читаемое