company_banner

PhpStorm 2019.2: Типизированные свойства PHP 7.4, поиск дубликатов, EditorConfig, Shell-скрипты и многое другое



    Всем привет! Мы рады представить вам второй мажорный релиз PhpStorm в этом году!


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


    Скачать новую версию можно на сайте или с помощью Toolbox App. Как всегда, доступна 30-дневная пробная версия. Полную же версию могут использовать обладатели действующей подписки на PhpStorm или All Products pack, а также бесплатно студенты и разработчики проектов с открытым исходным кодом.



    PHP 7.4: типизированные свойства


    PHP 7.4 обещает быть самым крутым и богатым на новые возможности релизом со времен PHP 7.0! Посмотрите на все принятые в нем RFC.


    Самая ожидаемая фича это, конечно же, типизированные свойства, и PhpStorm 2019.2 уже полностью их поддерживает! Включая подсветку, вывод и резолв типов, а также всевозможные проверки.


    Если вы попытаетесь положить в свойство что-то не то — PhpStorm сразу об этом предупредит.



    А вот чтобы подготовиться к миграции на PHP 7.4, который выйдет в конце ноября, в PhpStorm есть быстрые фиксы. Для объявления типа можно нажать Alt+Enter на свойстве без типа и выбрать Add declared type for the field. PhpStorm определит тип свойства на основе информации в PHPDoc, дефолтном значении или декларации типа аргумента, если свойство внедряется через конструктор.



    Оператор ??= (null coalesce assign)


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


    В PhpStorm, само собой, поддерживается синтаксис, но еще есть быстрый фикс Alt+Enter для того, чтобы заменить ?? там, где это возможно:



    Оператор распаковки (...) в массивах


    PHP поддерживает распаковку аргументов с помощью оператора еще с версии 5.6. В предстоящем релизе PHP оператор можно будет использовать и в массивах:



    PhpStorm проанализирует использование оператора на корректность и удостоверится, что вы распаковываете только массивы или объекты Traversable и не пытаетесь по ошибке сделать что-то не поддерживаемое интерпретатором PHP:



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

    Автовнедрение регулярных выражений в PHP


    В предыдущих версиях PhpStorm регулярные выражения в PHP-коде по умолчанию никак не подсвечивались и отображались как обычные строки. Конечно, можно было внедрить язык RegExp вручную, но не будешь же делать это по всему проекту.


    В PhpStorm 2019.2 добавлена полная поддержка регулярок в PHP! Это значит, что там, где в коде используются функции preg_*, шаблоны будут подсвечиваться и проверяться на валидность.



    Более того, теперь можно протестировать регулярное выражение прямо в IDE! Наведите указатель на шаблон, нажмите Alt+Enter и вызовите Check RegExp.



    Подсветка дублированного кода на лету


    Поиск дубликатов в PhpStorm есть уже довольно давно, в меню Code → Locate Duplicates. Если вы пока его не пробовали, попробуйте — и удивитесь, как много повторений может быть в проекте!


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


    Вы сможете перейти к другому дубликату или просмотреть все списком в отдельном окне:



    Кстати, это хорошие кандидаты на рефакторинг Extract.

    Новая инспекция называется Duplicated code fragment и включена по умолчанию. Порог чувствительности можно установить в разделе Preferences | Editor | Inspections | General | Duplicated code fragment → PHP. А в Preferences | Editor | Duplicates можно установить, какие элементы будут игнорироваться при поиске дубликатов, например можно не учитывать разные имена переменных, методов или свойств, а также значений констант.


    Поддержка формата PHPT


    Хотели бы контрибьютить в сам PHP и присоединиться к PHP Internals? Лучший способ — начать с документации и тестов! К счастью, для этого нет необходимости знать C. Тесты для PHP пишутся в специальных файлах .phpt. По сути, это текстовый файл, разбитый на несколько секций, некоторые из которых могут содержать PHP-код.


    Так вот, в PhpStorm 2019.2 есть и поддержка phpt-файлов! Секции подсвечиваются, PHP и INI автоматически внедряются там где нужно, работают переходы на внешние файлы в соответствующих секциях.



    Больше информации о написании тестов для PHP есть тут: PHP TestFest Tutorials, PHP Internals Book и qa.php.net.


    Запуск Composer через любой PHP-интерпретатор


    Ранее для запуска Composer всегда нужен был локальный интерпретатор PHP. Проблема в том, что его может не быть вовсе или окружение может не соответствовать продакшену. Теперь в PhpStorm 2019.2 запускать Composer можно через любой интерпретатор, сконфигурированный в IDE. Например, через Docker, Docker-compose, Vagrant или, скажем, удаленный сервер по SSH.


    Чтобы попробовать эту возможность, выберите Remote Interpreter в настройках Preferences | Languages & Frameworks | PHP | Composer.



    Выберите существующий интерпретатор или добавьте новый!


    Быстрые фиксы


    Разбиваем список на несколько строк и наоборот


    Согласно PSR-2, строка больше 80 символов в длину должна быть разбита на несколько строк, каждая из которых короче 80 символов. Поэтому, если у вас есть большой массив или аргументы/параметры функции не помещаются на экране, то можно нажать на них Alt+Enter и выбрать Split comma-separated values into multiple lines:



    Если вдруг в результате рефакторинга список стал короче и помещается в одну строку, то обратное действие тоже доступно: Join comma-separated values into a single line.


    Кстати, тут вам может понадобиться быстро поправить настройки стиля кода. Чтобы долго не искать нужные опции, выберите этот кусок кода, нажмите Alt+Enter и вызовите Adjust code style settings. PhpStorm при этом предложит поменять только те опции, которые актуальны для выбранных строк:



    Конструкция switch


    Мы реализовали возможность быстро добавлять ветки в конструкции switch. Нажмите Alt+Enter на выражении case без тела и вызовите Copy ‘switch’ branch.


    Не забудьте отредактировать скопированную ветку, иначе PhpStorm будет подсвечивать повторяющийся кусок:



    Также PhpStorm 2019.2 предупредит, если в switch нет дефолтной ветки, а добавить ее можно также с помощью быстрого фикса.


    Манипулирование строками


    PhpStorm поможет с рутинными операциями над строками. Что бы вам ни пришлось делать со строкой — разбить на части, изменить кавычки, конвертировать конкатенацию в sprintf или интерполяцию, или что-либо еще — жмите Alt+Enter на строке и выбирайте нужное действие из списка.


    В этом релизе мы добавили пару новых фишек в этот список.


    Предположим, у вас есть длинное выражение в sprintf, и вам нужно добавить еще один параметр вместо подстроки. Выделите ее, нажмите Alt+Enter, выберите Extract selected string part as format function argument, и PhpStorm поставит параметр в нужном месте:



    Также можно отделить подстроку конкатенацией:



    Предпросмотр для структурного поиска (Structural Search)


    Структурный поиск, или коротко SSR, — это мощный инструмент, который позволяет искать куски кода не только как текст, но как маленькие синтаксические деревья, при этом указывая типы узлов или другие фильтры. Попробуйте его: Edit → Find → Search Structurally…


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


    Представьте, например, что вы хотите найти все вызовы определенного метода у класса, но только такие, в которых в качестве параметра передается объект другого определенного класса. Обычным поиском найти такое будет сложно, а с SSR — на раз!



    HTTP клиент


    Поддержка формата cURL


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


    Теперь эту строку можно использовать в PhpStorm. Создайте файл с расширением .http или новый HTTP-request scratch file с помощью сочетания клавиш Cmd+Shift+N (Ctrl+Shift+Alt+Insert), и затем вставьте строку запроса cURL. Она автоматически будет сконвертирована в полный запрос, и дальше можно удобно экспериментировать с заголовками и другими параметрами запроса.



    HTTP клиент хранит куки


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



    Если вы не хотите, чтоб куки сохранялись, используйте тег @no-cookie-jar для конкретного запроса.


    Version Control


    Новый способ коммита без диалога


    Предположим, вы изменили несколько файлов в разных папках проекта. Чтобы закоммитить их, вы идете на вкладку Local Changes окна Version Control, выбираете нужные файлы и вызываете диалог коммита. В этот момент все блокируется всплывающим окном, и вы не можете посмотреть проект.


    В PhpStorm 2019.2 же можно коммитить непосредственно из вкладки Local Changes.

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



    Фича отключена по умолчанию. Чтобы попробовать ее, поставьте галочку “Commit from the Local Changes without showing a dialog” в Preferences | Version Control | Commit Dialog.


    Напоминания о связанных файлах


    Когда вы формируете коммит, PhpStorm 2019.2 может подсказать вам добавить файлы, которые раньше часто изменялись вместе с теми, которые вы уже выбрали для коммита.



    Улучшена работа с .gitignore


    PhpStorm поддерживает .gitignore из коробки и подсвечивает игнорируемые файлы в Project view.


    Стало чуть легче добавлять в .gitignore. Это можно сделать в окне Version Control, вызвав Add to .gitignore из контекстного меню на файлах, которые еще не добавлены в систему контроля версий.



    В самом файле .gitignore теперь есть автодополнение путей, и по Cmd+click файл будет выделен в Project view.



    В логе можно прятать колонки author, data или hash.



    Сравнение текущего состояния с любой веткой


    Для этого достаточно вызвать команду Show Diff with Working Tree из попапа Git Branches, который показывается по клику на имени текущей ветки в правом нижнем углу.



    История директорий из Project View


    Можно выделить несколько папок в Project View и посмотреть историю изменений для них с помощью команды Git | Show History from из контекстного меню.



    Docker


    Мы перенесли Docker в новое окно Services. Цель этого окна — собрать в одном месте все соединения и выполняющиеся процессы. Пока по умолчанию в PhpStorm туда входит Docker и соединения с базами данных. Также можно добавить любые Run/Debug-конфигурации в окно Services. Это доступно в секции Configurations available in Services в Run | Edit Configurations…


    Все сервисы отображаются как узлы, но каждый из них можно сделать отдельной вкладкой, вызвав Show in New tab или просто перетащив узел заголовок окна Services.



    Просмотр файловой системы контейнеров Docker


    Навигировать по содержимому контейнера можно на вкладке Files.



    Редактор


    Дополнение кода при опечатках


    Если вдруг вы написали funtcion или fnction вместо function — не страшно, потому что дополнение все равно сработает, так как распознает такого рода опечатки.



    Это работает во всех языках и для всех символов — ключевых слов, классов, функций, свойств, методов и т. д.


    Конфигурация поведения ‘Move Caret to Next Word’


    Можно выбрать, куда будет ставиться указатель при перемещении по словам.Смотрите раздел Caret Movement в Preferences | Editor | General.


    <


    Перемещение за скобки и кавычки при нажатии Tab


    Старая фишка теперь включена по умолчанию. Когда вы печатаете и нажимаете Tab, вместо добавления символа табуляции ваш курсор переместится за пределы кавычек и скобок. Чтобы отключить эту возможность, уберите галочку Jump outside closing bracket/quote with Tab when typing в разделе настроек Preferences | Editor | General | Smart Keys.



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


    Еще одна суперполезная фишка теперь включена по умолчанию. Когда вы нажимаете кавычку (или скобку), выделив кусок кода, то в начале и конце выделения автоматически будут добавлены кавычки (или скобки).



    Если такое поведение вам не по душе, его можно отключить галочкой Surround selection on typing quote or brace в разделе Preferences | Editor | General | Smart Keys.


    Новая раскладка по умолчанию на macOS


    Мы поменяли дефолтную раскладку на macOS с Mac OS X на macOS 10.5+. Еще мы переименовали раскладки: Mac OS X 10.5 теперь называется Default for macOS, а старая Mac OS X теперь IntelliJ IDEA Classic.


    Подсветка синтаксиса для более чем 20 языков


    Если у вас в проекте есть файлы на других языках программирования кроме PHP и JavaScript, то PhpStorm 2019.2 вы будете приятно удивлены подсветке синтаксиса для Python, Ruby, Go и целой пачки других языков. Это работает из коробки и никаких дополнительных настроек не требует.


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



    Подсветка синтаксиса для дополнительных языков работает на основе TextMate-грамматик. Посмотреть полный список поддерживаемых из коробки языков можно в Preferences | Editor | TextMate Bundles.


    Shell-скрипты


    В PhpStorm 2019.2 мы реализовали широкую поддержку shell-скриптов, включая дополнение путей, рефакторинг Rename, генерацию кода (Cmd+N/Alt+Insert) и пачку лайв-темплейтов (Cmd+J/Ctrl+J).



    Также реализована интеграция с несколькими внешними инструментами.


    Для поиска потенциальных проблем в скриптах PhpStorm предложит установить Shellcheck, который находит тонну проблем и предоставляет быстрые фиксы для них.


    Также в PhpStorm 2019.2 интегрируется с инструментом mvdan/sh для форматирования shell-скриптов. Когда вы вызовете Reformat Code в первый раз, IDE предложит установить его и затем будет правильно форматировать.


    И, наконец, есть интеграция с сайтом Explainshell. Можно выделить любую команду, нажать Alt+Enter и выбрать Explain shell. IDE перенаправит на Explainshell, где можно будет посмотреть, что значит выбранный набор. При наведении на команду прямо в IDE также отображается хелп.



    EditorConfig


    Добавляя файл .editorconfig, вы делаете разработку в команде более приятной, так как определенные опции стиля будут у всех работать одинаково независимо от используемого редактора.


    Раньше в PhpStorm требовалось установить плагин EditorConfig, но в 2019.2 он доступен из коробки и дополнительных действий не требуется.


    Вы можете задавать разные настройки для разных подпапок в проекте. Просто создаете в нужных папках файлы .editorconfig — их в проекте может быть сколько угодно.


    В файле .editconfig также можно задавать опции PhpStorm!

    Кроме стандартных для EditorConfig опций, можно конфигурировать почти все опции стиля, специфичные для PhpStorm. Раньше их можно было конфигурировать только из UI. Такие опции обозначаются префиксом ij_, чтобы отличаться от стандартных.



    Если вы создаете новый файл .editorconfig из Project View, то PhpStorm предложит вам выбрать, какие опции включить в созданный файл. Они будут добавлены закомментированными, и нужные можно раскомментировать и поменять.



    Внешний вид


    Больше информации в Project View


    Можно включить отображение размера и даты изменения файлов в Project View с помощью View -> In-place Descriptions.



    Новый вид всплывающей подсказки для инспекций


    Всплывающая подсказка теперь не только описывает проблему, но и предлагает первый фикс из списка. Чтобы применить его мгновенно, даже без подсказки и клика, нажмите Alt+Shift+Enter. Чтобы посмотреть все доступные фиксы, нажмите Alt+Enter.



    Обновленный UI на Windows


    Свежий безрамочный вид на Windows 10:




    PhpStorm, как всегда, включает в себя все обновления из WebStorm и из DataGrip. А полный список изменений можно найти в очень больших release notes.


    И, напоследок, короткий ролик (на английском) с демонстрацией главных фич релиза:



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


    Ваша команда JetBrains PhpStorm

    JetBrains
    394.52
    Делаем эффективные инструменты для разработчиков
    Share post

    Comments 125

      +3

      Сделали неудобной "Run command". Теперь я не могу ее держать постоянно открытой в табе (в sidebare).
      Пользовался как консолью с автокомплитом и историей вместо терминала в windows.

        +4
        Было б здорово, если б вы описали свой «workflow» завязанный на Command Line Tool Support на нашем трекере: youtrack.jetbrains.com/newIssue. Как я вижу сейчас действительно нельзя закрепить run anything как тулбар. Возможно получится опционально вернуть старый вид «Run command» если будет много заинтересованных.
          0

          +

            +1

            Это на самом деле проблема — раньше это был отдельный таб, в котором работал автокомплит по command line tools. Достаточно было написать, условно, mig и мы получали doctrine:migrations:migrate. Сейчас же, в новом окне, автокомплита по добавленным tools'ам вообще нету.

        +4
        А когда у вас появится возможность в автокомплите выключать бестолковые дополнения и делать сортировку например по тем которые чаще всего используются? Ну например я вот часто работаю с css и часто использую margin пишу ma и почему-то выбран по умолчанию margin-bottom а не просто margin?
          +1
          В Вашем случае пригодятся возможности Emmet для автодополнения. Для margin, например:
          m20 + Tab = margin: 20px;
          p8 + Tab = padding: 8px;
          fz14 + Tab = font-size: 14px; и т.д.
            +2

            Сейчас автокомплит учитывает частоту использования тех или иных вариантов. У меня, к примеру, в css ma комплитися именно в margin.
            Можете попробовать удалить папку ~\.PhpStorm<версия>\system\stat чтобы сбросить "весы" комплишена.

            +3
            Функций полезных новых много, но что там делают дизайнеры? Светлый интерфейс стал еще светлее и неконтрастнее. Например, теперь найти активную вкладку стало труднее: разница в яркости — 3% и теперь приходится выискивать тонкую синюю линию, а когда вкладки расположены вертикально, это сделать еще труднее.
              +1

              Эта проблема сейчас обсуждается внутри команды. Попробуйте выключить "Use in Editor Tabs" в File | Settings | Appearance & Behavior | File Colors.

                0
                Проблема не с цветными вкладками, а с обычными. Они стали все светло серые и на некоторых мониторах могут вообще не различаться. Да и цветные мне нужны. Просто раньше неактивные вкладки затенялись, был хороший контраст с четкими границами.
                Как по мне, дизайн становится современнее, но теряет удобство. Например, год назад перерисовали иконки, но не все. Часть просто убрали. И после обновления вручную добавленные кнопки на тулбаре стали без своих иконок.
                  0

                  Фидбэк по проблеме с малоконтрастными вкладками собирается здесь: https://youtrack.jetbrains.com/issue/IDEA-219204. Можете также прокомментировать/проголосовать.

                    +1
                    Я и создал эту issue.
                      0

                      Тогда спасибо! :)

                  0
                  В darcula тоже самое. Вкладки не видно. Шрифт consolas — ужасен, какой-то sublime получился (да, я, в курсе что можно поменять, но это лишнее действие). Apple-way с навигационной панелью в windows вообще жуть, не удобно. Да вопрос привычки, но я работаю в windows, зачем из этого лепить macos? Цветовая схема в автокоплите, что это за «попугай»? Просто вырви глаз какой-то. Дизайнер тот же человек, что рисовал оболочку для телефонов huawei?
                0
                Пользуюсь JetBrains Toolbox и заметил, что скетчи не переносятся с версиями.
                Сейчас обновился на 2019.2 и все скетчи, что были остались в старой версии.

                Или я что-то делаю не так?
                  0

                  Вы имеете ввиду scratches? Должны переноситься. Settings Repository не пользуетесь случайно? Если нажмете RMB по скретч файлу > Show in Explorer — откроет папку ~\.PhpStorm2019.2\config\scratches?

                    +1
                    Вы имеете ввиду scratches?

                    Да

                    Settings Repository не пользуетесь случайно?

                    Да, я забрал настройки с репы, а скетчи были в старой версии.

                    Разобрался :)
                      0

                      Здорово :)

                  +5
                  А это только у меня каждый релиз меняются шрифты?
                  Вроде бы неплохо, но блин, каждый раз новый шрифт.

                  Кстати, проверка регулярок работает как будто они обрамлены в ^$
                  prnt.sc/okata7

                  Хотя по факту это не так
                    0

                    Поменялся line spacing с 1.0 на 1.2. Также были различные фиксы в нашем рантайме связанные с рендерингом, например https://youtrack.jetbrains.com/issue/JBR-1008. Можете еще написать нам на наш трекер на https://youtrack.jetbrains.com/newIssue, приложить скриншоты до/после и мы посмотрим проблему детальнее.

                      0
                      Не уверен в правильности моего английского, так что если что, поправьте пожалуйста: youtrack.jetbrains.com/issue/WI-47750
                        0

                        Спасибо, нормально. Проверим и ответим там.

                      0
                      А я после обновления минут 5 очки протирал — никак не мог поверить, что шрифт изменился :)
                        0

                        Рендеринг некоторых шрифтов действительно поменялся: https://youtrack.jetbrains.com/issue/JBR-1624. Исправим это в следующем минорном обновлении.

                        0

                        Сломалось то, что работало.
                          0

                          Плюсую, такой же баг, хотя в релиз-кандидате не было


                          https://youtrack.jetbrains.com/issue/WI-47745

                            0
                            Э, чего захотели! Список багов в релиз-кандидате!
                            Кстати хорошая бы фича была :)
                              +1
                              Спасибо за замечание! Наш косяк, уже исправили, фикс будет в ближайшем обновлении.
                              0
                              Хм. А можно полный код файла?
                              Попробовал делать addMethod — все работает как надо.
                                0
                                <?php
                                declare(strict_types=1);
                                
                                namespace Tests\Http;
                                
                                use Tests\TestCase;
                                
                                class ProviderActHttpTest extends TestCase
                                {
                                
                                    public function testProvider()
                                    {
                                        $this->checkIndexRoute();
                                        $this->checkShowRoute();
                                    }
                                }
                                
                                
                            0
                            День дружбы в этом году будет?
                              +3
                              День точно будет) И дружба тоже. А вот специальных акций, как в прошлом году, пока не предусмотрено.
                              0
                              Пробежался сейчас по справке PHPStorm, но что-то не увидел — а снипеты быстрые есть у вас? То, есть безо всяких нажатий Ctrl+ и так далее, заданный мною кусок кода, сам вставляется после набора присвоенных ему символов и нажатия пробела после них.

                              Вот сейчас в текущем редакторе, всё мое PHP программирование сводится к набору примерно следующего текста:
                              fn mq wrw notr fe fq

                              Вместо этого, автоматом на экране появляются заданные мною, функции и много-строчные SQL ит PHP конструкции, суммарно на пяток листов текста — 15 букв — и 5 лисов кода готово, без всяких контролов и прочей лабуды. Есть такое в PHPStrom?
                                0

                                есть "live templates" называется, но оно не сразу по всей строке,
                                https://blog.jetbrains.com/webstorm/2018/01/using-and-creating-code-snippets/

                                  0
                                  Это я видел, но там, либо я не смог разобраться, либо оно не так работает, как я написал. Там всплывает список этих сохраненных кодов и нужно выбирать. А так, чтобы ничего не всплывало и не мешало — а просто по памяти, набрал 2 буквы — пробел (да пусть даже и Tab будет) и сразу кусок кода.

                                  Чтобы не моргали эти бесконечные раздражающие всплытия — вроде нет такого?
                                    +1

                                    Live templates так работают с табом

                                  0
                                  Да, конечно есть! Называются Live Templates, список вот тут Preferences | Editor | Live Templates, там же можно добавить.
                                  Работают точно, как вы описали: печатаете например fore и нажимаете tab.
                                  Есть даже взять готовые подборки на гитхабе или сделать свою, вот тут можно почитать об этом: blog.jetbrains.com/phpstorm/2018/10/sharing-code-snippets-in-phpstorm-easy-way
                                    0
                                    Нет, там на картинке в хэлпе, при печатании всплывает список, нужно выбрать что-то конкретное и потмо нажать Tab. А так, чтобы без всяких всплытий, всяких раздражающих списков, сразу по памяти набрал две буквы, пробел — код на этих буквах у тебя в редакторе.
                                      0
                                      Выбирать надо, если он не первый в списке, но обычно лайв темплейты в самом верху и отлично работает по табу без выбора.
                                      Вот например я использую кастомный cl и потом стандартные pubf, fore и eco:
                                        –2
                                        Возможно к этой дергатне со всплытиями и можно привыкнуть, нужно просто подольше потренироваться. Но меня это раздражает до уровня «разбить монитор и голову разраба этого» :)
                                          +4

                                          Отключите Code Completion (что бы это окошко не появлялось самостоятельно) и вызывайте его вручную когда надо (Ctrl+Space как правило)

                                    0

                                    Есть, даже с учетом контекста, но Tab прийдется нажимать после каждого снипета.

                                    0
                                    Извините, если вопрос дурацкий.
                                    А я могу наконец докер композ с оверрайдом целиком запустить кнопкой на панельке или надо в консоли?
                                      0

                                      Грубо говоря да, можете. RMB по docker-compose.yml > Create "docker-compose.yml"… В новом окне в поле Compose file(s) указываете все нужные файлы: они будут переданы с -f ключом.

                                        0
                                        Запускать, допустим, получилось, а как останавливать — пока не ясно.
                                        Впрочем, не беда.
                                          0

                                          Там откроется Docker tool window. Слева будут кнопки docker-compose down и docker-compose stop

                                            0
                                            Запускает, но не останавливает.
                                              0

                                              Никаких ошибок не выдаёт? Можете связаться с нами напрямую через Help > Contact Support и приложить скриншоты — посмотрим что не так.

                                      +2
                                      Спасибо за релиз!
                                      Отдельное — за включение существовавших фич по-умолчанию :-D.
                                      Я слишком старый чтобы когда-либо их включить, а оказалось действительно удобные. Не стесняйтесь так делать и в будущем.
                                        +1
                                        По-моему, short closures это более ожидаемая фишка чем типизированые поля
                                          0
                                          Соглашусь, что дело вкуса :-) Кстати, short closures в этом релизе тоже поддерживаются, но быстрые фиксы для преобразования будут в 2019.3.
                                            +1
                                            Как раз к релизу 7.4, это хорошо
                                          0

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

                                            +1
                                            Если ставите через тулбокс, то там в настройках есть галочка «keep only the latest version»
                                              0

                                              Галочка была включена, но не отработало — новые релизы создали новые директории .ProductName2019.2

                                            0
                                            -
                                              0

                                              после распаковки кидайте в bin/idea.properties старый файлик
                                              главное чтобы были раскомменчены ну и поправлены на нужный конфиг


                                              idea.config.path=${user.home}/.config/PhpStorm
                                              idea.system.path=${user.home}/.local/share/PhpStorm

                                              Тоесть распаковали, закинули, запустили.
                                              А вообще лучше еще
                                              phpstorm64.vmoptions
                                              phpstorm.vmoptions
                                              а то дефолтно с памятью проблемы.

                                              0
                                              Подскажите, чем отличается новая функция «Сравнение текущего состояния с любой веткой» от «Правая кнопка на корне проекта, Git, Compare with branch»? Не могу разобраться.
                                                0

                                                «Сравнение текущего состояния с любой веткой» показывает также текущее состояние working tree.
                                                Вы можете вызвать оба действия одновременно и посмотреть на разницу.

                                                +2
                                                Автоопределение SQL начинающихся с WITH поправили? Престо невероятно нервирует каждый раз руками это дело указывать, особенно с учетом того факта что при перезагрузке возможно снова придется.

                                                Кстати не смотря на все настройки параметров, параметр в запросе вида «select * from dual where dummy in (select * from table(:params))» будет подсвечен красным как неизвестная таблица.
                                                  0

                                                  Нет, к сожалению, мы всё ещё не включаем паттерн WITH по умолчанию (https://youtrack.jetbrains.com/issue/WI-29643 для рефернса).
                                                  По поводу второго — да, действительно проблема. Можете зарепортить нам на https://youtrack.jetbrains.com/newIssue, проект DBE.

                                                    0
                                                    Нет, к сожалению, мы всё ещё не включаем паттерн WITH по умолчанию (https://youtrack.jetbrains.com/issue/WI-29643 для рефернса).

                                                    Хорошая ссылочка, добавил паттерн «WITH.*AS.*SELECT», полегчало.

                                                    По поводу второго — да, действительно проблема. Можете зарепортить нам на youtrack.jetbrains.com/newIssue, проект DBE.

                                                    На этот раз слегка лениво, можете сами себе зарепортить?
                                                    0
                                                    А как настроен параметр, который обрабатывает такой случай?
                                                      0
                                                      Коллекция
                                                        0
                                                        Непонятно :( Покажите плиз скрин настроек user parameters
                                                  +2
                                                  В новом PHPStorm явно изменилась логика индексации. Ранее индексация съедала весь процессор и длилась секунд 20. Сейчас то же самое заняло 40 секунд при средней загрузке в 60%. Это явно было сделано специально потому что иногда реально бесило когда комп начинал резко тупить пол минуты. Но хотелось бы какой-то настройки для тех кому все же нужно чтобы индексация прошла максимально быстро.
                                                    0

                                                    Честно говоря, не вижу в release notes подобных изменений (не исключено что я просто пропустил). Не может ли это быть связано с hardware throttling вашей системы? У меня индексируется всё так же на 100% загрузки.

                                                      0
                                                      Может быть связано с чем-то другим, но точно не с тротлингом.
                                                    +1

                                                    Встретил детектор дублирования кода ещё релиз-ноты не прочитав — реально круто.


                                                    А вот с подсветкой кода: есть/планируется возможность открывать, а в идеале аттачить к phpstorm файлы/проекты на других языках с открытием их в соответствующей IDE? Ну, например, go в PHP проекте открыть в goland и наоборот? В мире микросервисов, где в одном бизнес-проекте могут быть десятки технических проектов на нескольких (в нашем случае 4) языках, глубокая интеграция между разными IDE была бы очень полезна. All-in-one крутая лицензия для таких проектов (досрочно продлил увидев новую фичу с детектором дублей), но это чисто юридический аспект.

                                                      +1

                                                      Схожая возможность обсуждается здесь: https://youtrack.jetbrains.com/issue/IDEA-65879 — открывать файлы протоколом вида idea://open?file=/.... В целом, при работе с несколькими языками проще просто установить IntelliJ IDEA Ultimate и добавить в неё необходимые плагины, например PHP + GO.

                                                        0

                                                        А Java плагины отключить в ней можно, чтоб ничего не напоминало?

                                                      0
                                                      А я вот заметил, что если пользоваться штормом на работе и дома и хранить файлик с паролями на Google-диске, то потом там набирается несколько десятков копий этого файлика, и все пароли от деплоев периодически слетают.
                                                        0

                                                        Это немного "несекьюрно". Если вы имеете в виду файл c.kdbx, то он шифруется используя уникальную комбинацию юзера и железа, на котором этот файл открылся. По умолчанию, этот файл не откроется на другом ПК, если его просто скопировать и "скормить" существующей инсталляции PhpStorm. Можете задать Master Password для этого файла и тогда сможете его копировать между инсталляциями: https://www.jetbrains.com/help/phpstorm/reference-ide-settings-password-safe.html

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

                                                          А как вы себе это представляете? Автор плагина должен полный список поддерживаемых версий вести?

                                                            0
                                                            Сейчас плагин отключается если не совместим с текущей версией IDE — значит где-то есть эта информация в метаданных плагина
                                                              0

                                                              Пока что мы действительно просто отключаем плагин, если он не совместим.

                                                            +1
                                                            При компиляции плагина можно задать until-build, но как правило плагины устанавливают только since-build, надеясь, что в последующих версиях плагин тоже будет работать. Если сейчас требовать от всех until-build, то сразу отвалится существенная доля плагинов.

                                                            PS
                                                            PS. Если у разработчика плагина нет лицензии на Ultimate версию, то ему нужно снести текущий триал и установить новый (оставим в стороне вопрос легальности этого после окончания испытательного срока), установить ряд необходимых плагинов, пересобрать плагин, проверить его и загрузить на plugins.jetbrains.com. В итоге, если разработка плагина ведется просто в свое удовольствие и нового функционала пока не добавляется, то не имеет смысла тратить время на еженедельное тестирование плагина в EAP, потом в RC, и в релизе, чтобы гарантировать работоспособность.
                                                              0
                                                              Разработчикам плагинов легко дают опенсорс лицензию на ультимейт. С этим нет проблем.
                                                                0

                                                                Даже если плагин не опенсорс?

                                                                  0
                                                                  Не всё так просто. Даже если opensource, то далеко не факт, что дадут. Например, если вы предлагаете платную поддержку, то лицензию не дадут. Если новые версии выходят реже, чем раз в три месяца — тоже. Если у проекта нет «активного коммьюнити» (чтобы это ни значило) — тоже нет.
                                                                    0

                                                                    Я как раз удивился потому, что зная о сложностях для опенсорсных продуктов, тут вижу о плагинах вообще.

                                                            +1
                                                            Заметил, что в новом функционале для докера, который выводит список файлов, список выводится только Debian подобных дистрибутивов, например для того же Alpine список не выводится

                                                            фикс на этот счет будет?
                                                              0

                                                              О, я уже заметил, но ещё не разобрался. Если фикса не будет, то будет ещё один довод в пользу Debian подобных дистрибутивов :)

                                                                0
                                                                смешно )))
                                                                  0

                                                                  Почему смешно? Хороший DX — один из критериев выбора того или иного стэка в целом. Alpine vs Debian/Ubuntu не исключение.

                                                                    0

                                                                    Кгм… ну как бы Alpine во всех смыслах в другой весовой категории

                                                                      0

                                                                      Именно, что во всех. Есть как плюсы, так и минусы.

                                                                      0
                                                                      согласно википедии, Alpine не является Debian-подобным дистрибутивом, и как тут уже написали, другая весовая категория
                                                                        0

                                                                        "vs" должно намекать, что я противопоставляю Alpine и Debian-подобные дистрибутивы.

                                                                    +1
                                                                    еще вопрос
                                                                    планируется ли добавить редактирование файлов в этом функционале? или так и останется read-only?
                                                                  0

                                                                  Пока никто на это внимания не обращал. Можете написать нам на https://youtrack.jetbrains.com/newIssue, приложив скриншоты

                                                                    0
                                                                    было бы что там скринить… просто выводится сообщение, что не удается получить данные о ФС, и что контейнер может не поддерживаться
                                                                    +1
                                                                    Безрамочный режим в win шикарная штука! Планируется ли такое под линуксы?
                                                                      0

                                                                      Должен быть. Если на 2019.2 у вас нету — возможно проблема во взаимодействии с вашим windows manager. Можете написать нам через Help > Contact Support чтобы разобраться детальнее.

                                                                        +1

                                                                        Поправка: для Linux в данный момент этой фичи нет, я не правильно понял слова разработчика.
                                                                        Наверняка и для Linux подобное планировалось, но вернее всего будет добавить новый feature request на эту тему на нашем трекере: https://youtrack.jetbrains.com/newIssue

                                                                          +1

                                                                          Никто не создал, поэтому я сделал это сам: https://youtrack.jetbrains.com/issue/IDEA-220105 — можете голосовать.

                                                                            0

                                                                            Спасибо! Только вчера добрался до всех уведомлений, не успел создать.

                                                                      –4
                                                                      Планируется ли уменьшение потребления оперативной памяти PhpStorm'ом в 10 раз?
                                                                        0

                                                                        Попробуйте пометить "excluded" такие папки как tmp, log, images и cache: в общем все те, которые не необходимы для code completion.

                                                                          –4
                                                                          Совет хороший, которым к слову я года три как пользуюсь. Но вместе с тем.

                                                                          Практически пустой новый лёгкий проект, файлов с кодом буквально десяток, ноль тяжёлых и вообще каких-либо фреймворков, ноль зависимостей вида npm/composer/etc. Темпов, кэшей, логов пока нет. Стоковый шторм самой свежей версии, о которой речь в статье, без сарказма и с пониманием, славных его разработчиков. Но — 800 Мб оперативки. На что? Зачем? Я линукс компилирую параллельно с научными расчётами seti@home? Бигдату просеиваю через нейросети и случайный лес? Что помешало шторму уложиться в 20 Мб а не в 800? И что мы можем сделать чтоб к этому придти? Java машина слишком раскидистая и неоптимальная? Лишние зависимости? Неоптимальный код? Недостаточно Lazy loading? Неоптимальные структуры данных?
                                                                          Hello world — это про 4 Кб, а не про 0,5 Гб. Нынешние тенденции в мире IT собирать конфету из тысячи обёрток и скотча, мягко говоря, пугают и печалят. А ведь могут лучше.

                                                                          Планируется ли уменьшение потребления оперативной памяти PhpStorm'ом от 10 до 20 раз? Или хотя бы, пусть, в 2-3 раза?
                                                                            +4
                                                                            Используйте Блокнот. Ему нужно очень мало памяти.
                                                                              –2
                                                                              Безусловно в такой ветке не могло не быть этого комментария)

                                                                              Мне нравится шторм. Я не хейтер его, если кто так подумал.
                                                                              Меня очень огорчают современные тенденции развития софта, где чаще фактически гонятся только за фичами, а оптимизацию задвигают на последнее место. Наоборот делать впрочем тоже плохо. Нужен балансный подход, когда оба компонента одинаково важны. Вот и интересуюсь — ребята, а какие у вас планы по оптимизации потребления ресурсов этим конвейером? Может есть офигеннейший роадмап и капитальные таски по этой теме и даже часть уже в работе, а никто ничего не знает. И открываешь PhpStorm 2019.4, а он просто летает и в диспетчере в списке процессов отсортированных по убыванию потребления памяти он далеко не на первых позициях и не сотнями метров её уплетает. И да, и несколько фич при этом появилось. Это же прекрасно!
                                                                                +3
                                                                                Открою вам страшную тайну. Версии 2019.4 не будет )
                                                                                Ну а среда разработки, как и ваш ноут/комп — это рабочие инструменты. В них функционал всегда будет чуток поважнее цены. Это касается в том числе и потребления памяти. Любая виртуалка в которой надо гонять что-то сложнее простенького сайтика будет жрать больше памяти.
                                                                                Я давно докупил памяти до 32 Гб, чтобы ничего не мешало работе… и ни разу еще не пожалел.
                                                                              +1

                                                                              800 Мб оперативки — это объем, который IDE (точнее уже JVM) резервирует себе для нужд. Внутри этих 800 метров и сидит, например, 4 Кб hello world.
                                                                              Величину оперативки, которую выделяет себе java машина, можно закастомизировать с помощью этой статьи: https://intellij-support.jetbrains.com/hc/en-us/articles/206544869 — значение -Xmx512m.
                                                                              Я думаю важно понимать что 800 метров оперативки, которые съел PhpStorm — это не 800 метров ТОЛЬКО под PhpStorm. В этих мегабайтах также хранятся и объекты проекта.

                                                                          0
                                                                          Обновил на 2019.2. Слетели все настройки деплоя. Ни одного актуального логина и пароля нет, зато есть те, которые я удалил хз сколько месяцев назад. Ну вот зачем так издеваться над пользователями?(((
                                                                            0
                                                                            > Подсветка синтаксиса для более чем 20 языков

                                                                            Последние пару дней закопался с Дженкинсом. И должен сказать что сильно не хватает подстветки груви. Уверен, что дженкинс — очень частый гость у пользователей шторма
                                                                            +3

                                                                            После перехода из Райдера очень не хватает простого и понятного поведения. Вот здесь хочется, чтобы Шторм подсказал класс A. Ну и если в методе тайпхинтится интерфейс, то предлагал в первую очередь его реализации.


                                                                            image


                                                                            А вообще, классный релиз. Спасибо!

                                                                              0

                                                                              У меня есть схожая проблема, но с неймспейсами…
                                                                              Создаю новый класс в Proj/Dbal/Models, пишу na<TAB>Models и он мне предлагает все возможные неймспейсы в которых есть Models, а их у меня (с учетом зависимостей) не один десяток. Хотелось бы чтобы нужный был на первом месте.

                                                                              +3
                                                                              Подсветка неиспользуемых классов и методов классная штука! Но есть одна проблема, есть классы и методы которые вызываются неявно, например классы контроллеров и методы экшенов в MVC фреймворках, нет ли какого-нибудь PHPDoc маркера чтобы PhpStorm не жаловался на такие классы и методы?
                                                                                +1

                                                                                Для некоторых есть поддержка noinspection, но не для всего
                                                                                https://www.jetbrains.com/help/phpstorm/disabling-and-enabling-inspections.html


                                                                                Хотя у меня вроде на контроллеры/экшны и не ругается, но это надо полагать от поддержки фреймворк зависит

                                                                                  +1
                                                                                  не хватает паттерн матчинга
                                                                                  `class .*\Controller\[a-z]*Controller` disable inspection `not-used`
                                                                                    +1
                                                                                    Есть такое. Alt+Enter, Edit inspection profile setting, Entry points, Code patterns.
                                                                                0
                                                                                Когда будет поддержка горячих клавиш на русской раскладке в linux, что бы бубны не доставать?
                                                                                В каких то ОС работают в каких то нет.

                                                                              Only users with full accounts can post comments. Log in, please.