Всем привет! Мы рады представить вам второй мажорный релиз 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

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


  1. Gemorroj
    26.07.2019 11:47

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


    1. tronin
      26.07.2019 15:47
      +1

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


      1. psFitz
        26.07.2019 21:17

        +


      1. tyraelqp
        29.07.2019 10:05
        +1

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


        1. tronin
          30.07.2019 15:39

          Постараемся решить эту проблему в короткие сроки: https://youtrack.jetbrains.com/issue/WI-47729


  1. sazareks
    26.07.2019 12:06
    +1

    А когда у вас появится возможность в автокомплите выключать бестолковые дополнения и делать сортировку например по тем которые чаще всего используются? Ну например я вот часто работаю с css и часто использую margin пишу ma и почему-то выбран по умолчанию margin-bottom а не просто margin?


    1. mavir
      26.07.2019 13:22
      +1

      В Вашем случае пригодятся возможности Emmet для автодополнения. Для margin, например:
      m20 + Tab = margin: 20px;
      p8 + Tab = padding: 8px;
      fz14 + Tab = font-size: 14px; и т.д.


    1. tronin
      26.07.2019 15:54
      +1

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


  1. alexantr
    26.07.2019 12:15
    +1

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


    1. tronin
      26.07.2019 16:01

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


      1. alexantr
        29.07.2019 12:18

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


        1. tronin
          30.07.2019 15:41

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


          1. alexantr
            30.07.2019 15:42
            +1

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


            1. tronin
              30.07.2019 16:52

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


  1. GenkaOk
    26.07.2019 12:30

    Пользуюсь JetBrains Toolbox и заметил, что скетчи не переносятся с версиями.
    Сейчас обновился на 2019.2 и все скетчи, что были остались в старой версии.

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


    1. tronin
      26.07.2019 16:05

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


      1. GenkaOk
        26.07.2019 16:10

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

        Да

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

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

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


        1. tronin
          26.07.2019 16:11

          Здорово :)


  1. Akuma
    26.07.2019 12:32

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

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

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


    1. tronin
      26.07.2019 16:11

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


      1. Akuma
        26.07.2019 16:32

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


        1. tronin
          26.07.2019 16:38

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


    1. AndrewShmig
      26.07.2019 23:39

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


    1. tronin
      30.07.2019 15:42

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


  1. uonick
    26.07.2019 12:56


    1. Samouvazhektra
      26.07.2019 13:11

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


      1. shushu
        26.07.2019 14:09

        Э, чего захотели! Список багов в релиз-кандидате!
        Кстати хорошая бы фича была :)


      1. pronskiy Автор
        26.07.2019 15:18

        Спасибо за замечание! Наш косяк, уже исправили, фикс будет в ближайшем обновлении.


    1. Akuma
      26.07.2019 13:24

      Хм. А можно полный код файла?
      Попробовал делать addMethod — все работает как надо.


      1. uonick
        26.07.2019 13:35

        <?php
        declare(strict_types=1);
        
        namespace Tests\Http;
        
        use Tests\TestCase;
        
        class ProviderActHttpTest extends TestCase
        {
        
            public function testProvider()
            {
                $this->checkIndexRoute();
                $this->checkShowRoute();
            }
        }
        
        


        1. Akuma
          26.07.2019 13:47

          У меня вот так: prnt.sc/okbxfu


  1. osipovlab
    26.07.2019 13:04

    День дружбы в этом году будет?


    1. anastasiak2512
      26.07.2019 14:34
      +1

      День точно будет) И дружба тоже. А вот специальных акций, как в прошлом году, пока не предусмотрено.


  1. E11E
    26.07.2019 13:04

    Пробежался сейчас по справке PHPStorm, но что-то не увидел — а снипеты быстрые есть у вас? То, есть безо всяких нажатий Ctrl+ и так далее, заданный мною кусок кода, сам вставляется после набора присвоенных ему символов и нажатия пробела после них.

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

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


    1. Samouvazhektra
      26.07.2019 13:12

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


      1. E11E
        26.07.2019 14:35

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

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


        1. psFitz
          27.07.2019 09:22

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


    1. pronskiy Автор
      26.07.2019 13:19

      Да, конечно есть! Называются Live Templates, список вот тут Preferences | Editor | Live Templates, там же можно добавить.
      Работают точно, как вы описали: печатаете например fore и нажимаете tab.
      Есть даже взять готовые подборки на гитхабе или сделать свою, вот тут можно почитать об этом: blog.jetbrains.com/phpstorm/2018/10/sharing-code-snippets-in-phpstorm-easy-way


      1. E11E
        26.07.2019 14:40

        Нет, там на картинке в хэлпе, при печатании всплывает список, нужно выбрать что-то конкретное и потмо нажать Tab. А так, чтобы без всяких всплытий, всяких раздражающих списков, сразу по памяти набрал две буквы, пробел — код на этих буквах у тебя в редакторе.


        1. pronskiy Автор
          26.07.2019 14:58

          Выбирать надо, если он не первый в списке, но обычно лайв темплейты в самом верху и отлично работает по табу без выбора.
          Вот например я использую кастомный cl и потом стандартные pubf, fore и eco:


          1. E11E
            26.07.2019 15:23
            -1

            Возможно к этой дергатне со всплытиями и можно привыкнуть, нужно просто подольше потренироваться. Но меня это раздражает до уровня «разбить монитор и голову разраба этого» :)


            1. CrazyLazy
              27.07.2019 22:45

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


    1. lnkvisitor
      26.07.2019 13:30

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


  1. Punk_UnDeaD
    26.07.2019 13:15

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


    1. tronin
      26.07.2019 16:21

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


      1. Punk_UnDeaD
        26.07.2019 17:29

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


        1. tronin
          26.07.2019 17:43

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


          1. Punk_UnDeaD
            26.07.2019 18:01

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


            1. tronin
              26.07.2019 19:58

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


  1. lytican
    26.07.2019 14:42
    +1

    Спасибо за релиз!
    Отдельное — за включение существовавших фич по-умолчанию :-D.
    Я слишком старый чтобы когда-либо их включить, а оказалось действительно удобные. Не стесняйтесь так делать и в будущем.


  1. baldrs
    26.07.2019 14:49

    По-моему, short closures это более ожидаемая фишка чем типизированые поля


    1. pronskiy Автор
      26.07.2019 15:06

      Соглашусь, что дело вкуса :-) Кстати, short closures в этом релизе тоже поддерживаются, но быстрые фиксы для преобразования будут в 2019.3.


      1. baldrs
        26.07.2019 18:28
        +1

        Как раз к релизу 7.4, это хорошо


  1. Samouvazhektra
    26.07.2019 16:38

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


    1. SandFoxMe
      26.07.2019 17:29

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


      1. Samouvazhektra
        26.07.2019 17:37

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


        1. SandFoxMe
          26.07.2019 20:02

          Действительно, про директории конфигов я и забыл :(
          Да, их бы тоже автоматически подчищать не мешало



    1. Adelf
      26.07.2019 17:43

      -


    1. iborzenkov
      27.07.2019 01:17

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


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

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


  1. Hint
    26.07.2019 23:20

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


    1. tronin
      30.07.2019 15:51

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


  1. Kwisatz
    27.07.2019 01:46

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

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


    1. tronin
      30.07.2019 16:47

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


      1. Kwisatz
        30.07.2019 17:09

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

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

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

        На этот раз слегка лениво, можете сами себе зарепортить?


    1. moscas
      30.07.2019 18:52

      А как настроен параметр, который обрабатывает такой случай?


  1. iproger
    27.07.2019 04:58

    В новом PHPStorm явно изменилась логика индексации. Ранее индексация съедала весь процессор и длилась секунд 20. Сейчас то же самое заняло 40 секунд при средней загрузке в 60%. Это явно было сделано специально потому что иногда реально бесило когда комп начинал резко тупить пол минуты. Но хотелось бы какой-то настройки для тех кому все же нужно чтобы индексация прошла максимально быстро.


    1. tronin
      30.07.2019 17:03

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


      1. iproger
        30.07.2019 18:05

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


  1. VolCh
    27.07.2019 06:52

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


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


    1. tronin
      30.07.2019 17:11
      +1

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


      1. VolCh
        30.07.2019 17:32

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


  1. fo_otman
    27.07.2019 11:28

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


    1. tronin
      30.07.2019 17:15

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


  1. square
    27.07.2019 12:20

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


    1. VolCh
      27.07.2019 16:38

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


      1. square
        27.07.2019 17:09

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


        1. tronin
          30.07.2019 17:21

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


    1. mobi
      27.07.2019 17:32
      +1

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

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


      1. Adelf
        27.07.2019 20:00

        Разработчикам плагинов легко дают опенсорс лицензию на ультимейт. С этим нет проблем.


        1. VolCh
          27.07.2019 23:07

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


          1. mobi
            28.07.2019 09:19

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


            1. VolCh
              29.07.2019 07:03

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


  1. wormen
    29.07.2019 06:11
    +1

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

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


    1. VolCh
      29.07.2019 07:04

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


      1. wormen
        29.07.2019 07:13

        смешно )))


        1. VolCh
          30.07.2019 05:22

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


          1. Samouvazhektra
            30.07.2019 05:49

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


            1. VolCh
              30.07.2019 06:35

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


          1. wormen
            30.07.2019 05:53

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


            1. VolCh
              30.07.2019 06:24

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


      1. wormen
        30.07.2019 06:08
        +1

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


        1. tronin
          30.07.2019 17:51
          +2

          планируется. Первый шаг был https://youtrack.jetbrains.com/issue/IDEA-176734 (готово). За ним последуют https://youtrack.jetbrains.com/issue/IDEA-176736 и https://youtrack.jetbrains.com/issue/IDEA-217902


    1. tronin
      30.07.2019 17:44

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


  1. POPSuL
    30.07.2019 08:09

    Безрамочный режим в win шикарная штука! Планируется ли такое под линуксы?


    1. tronin
      30.07.2019 17:57

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


  1. FlameStorm
    30.07.2019 15:19
    -3

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


    1. tronin
      30.07.2019 17:59

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


      1. FlameStorm
        30.07.2019 19:21

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

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

        Планируется ли уменьшение потребления оперативной памяти PhpStorm'ом от 10 до 20 раз? Или хотя бы, пусть, в 2-3 раза?


  1. fo_otman
    30.07.2019 19:03

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