company_banner

Новый PhpStorm 9: постоянное движение вперед. Postfix code completion для PHP, Inline Debugger и многое другое

    Привет, Хабр!

    Спешу сообщить о свежем релизе PhpStorm 9 — новой версии IDE для разработки на PHP от JetBrains.

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

    Работа с языком PHP и редактор


    Глубокое понимание кода

    Все подсистемы, связанные с PHP, были обновлены в данной версии. Самые важные улучшения включают:
    • Рефакторинг Introduce Parameter
    • Расширенное выведение типов PHP
    • Поддержка постоянных языковых вставок
    • Новые инспекции и intention actions


    Postfix Code Completion для PHP

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

    Например, если к логическому выражению добавить постфикс “.if”, то оно автоматически будет обернуто оператором ветвления if, и курсор переместится в тело оператора.



    Таким образом postfix completion экономит массу времени на перемещение курсора в обратном направлении.

    Частичная поддержка PHP 7

    Релиз PHP 7 уже не за горами, поэтому мы добавили частичную поддержку PHP 7 на уровне выбора языковой версии и соответствующего PHP интерпретатора, а также поддержку return type hints.

    Таким образом, добавленная поддержка позволяет использовать PHP 7 в новых проектах уже сейчас (до поддержки PHP 7 использование return type hints вызывало ошибки и красный код в IDE). Полная поддержка PHP 7 в PhpStorm ожидается в ближайшее время.

    Более удобная отладка


    Inline Debugger для PHP

    Благодаря Inline Debugger все данные о переменных, полученные от отладчика, отображаются прямо в редакторе. Таким образом, все значения переменных плавно интегрированы в интерфейс редактора.

    С применением Inline Debugger значения переменных можно увидеть прямо в исходном коде, рядом с их использованиями, что сильно упрощает процесс отладки. Не нужно ни наводить мышку на переменную, ни переключаться в панель переменных в окне отладчика!

    Процесс отладки

    Процесс отладки становится еще более простым и безболезненным с этим релизом. Настройка самого окружения PHP раньше превращалась в большую проблему. Мы уверены, что новые функции помогут преодолеть эти препятствия благодаря:
    • улучшенной валидации конфигурации отладчика;
    • открытию соответствующего php.ini для редактирования из настроек;
    • импорту настроек сервера из настроек развертывания;
    • и многим другие улучшениям.


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


    Remote Edit

    В версии 9 добавлена одна из самых востребованных функций в истории PhpStorm — удаленное редактирование (Remote Edit). Открывайте одиночные файлы напрямую с удаленного сервера (FTP, SFTP, FTPS и т. д.) и редактируйте их в IDE без сохранения/загрузки в локальный проект.

    Чтобы начать редактирование файла с удаленного сервера, просто выберите Edit Remote File в контекстном меню или дважды щелкните файл.

    Запуск удаленных инструментов через удаленный PHP интерпретатор

    Поддержка удаленных PHP интерпретаторов (появилась в PhpStorm 8) позволяет запускать приложения и инструменты в окружении, схожем с production окружением. Вы можете легко использовать виртуализированное окружение, запущенное с помощью Vagrant, совместно со всеми инструментами. В PhpStorm 9 так называемая удаленная разработка становится реальностью благодаря поддерже запуска PHP Code Sniffer и Mess Detector через удаленные PHP интерпретаторы.

    Улучшения во взаимодействии с фреймворками и сторонними инструментами


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

    Инструменты для фронтэнд-разработки


    PhpStorm включает в себя все функции WebStorm (включая все функции версии WebStorm 10, некоторые в виде бесплатных плагинов).

    В PhpStorm 9 полностью переработана поддержка JavaScript и добавлена поддержка следующих веб-технологий:
    • диаграммы зависимостей приложения;
    • трассировка языков, транспилируемых в JavaScript;
    • профилирование приложений Node.js с использованием V8;
    • одновременное редактирование тегов:




    Платформа IntelliJ


    Этот релиз заимствует немало функций и возможностей от IntelliJ Platform:
    • режим Distraction Free Mode:



    • средство просмотра различий с режимом одностороннего просмотра:



    • улучшения в интеграции с системами контроля версий;
    • обновленные инструменты работы с базой данных;
    • поддержка HiDPI для Windows и Linux;
    • обновленный вид вкладок редактора, и многое другое.


    Где почитать подробнее?


    Дополнительную информацию о PhpStorm 9 вы можете найти на других наших ресурсах. Или можно посмотреть короткое видео:



    В нашем англоязычном блоге и в разделе туториалов собраны материалы по большинству описанных в данном посте фичам (и многим другим). Кроме того, вам может быть интересно посетить вебинар с нашим Product Marketing Manager Михаилом Винком 22 июля — зарегистрироваться можно здесь.

    Что дальше?


    Качайте бесплатную 30-дневную пробную версию PhpStorm 9 на странице продукта, где также есть еще больше подробностей о новой версии.

    Обновление до версии 9 бесплатно для всех, кто приобрел лицензию после 8 июля 2014 года.

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

    И, конечно же, подписывайтесь на твиттер PhpStorm, чтобы всегда быть в курсе наших новостей!

    Программируйте с удовольствием!
    — Команда JetBrains PhpStorm
    JetBrains
    127.26
    Делаем эффективные инструменты для разработчиков
    Share post

    Similar posts

    Comments 94

      +1
      Починили отладку JavaScript в FireFox?
        +1
        Отладка в Firefox теперь работает через конфигурацию Firefox Remote, в посте в блоге WebStorm можно прочитать как ее настроить. В результате изменений на стороне Firefox сделать отладку, как она была раньше — это очень большая задача, которая, если честно, сейчас не стоит в приоритете.
        +3
        Подскажите пожалуйста, когда ожидается полная поддержка php 7, достаточно примерного времени по планам — в мажорном билде ~10 или каком-нибудь из ~9.1?

        Например не хватает контекстно-зависимых ключевых слов, они есть как в php 7, так и в jphp 0.7+, но из-за отсутствия их поддержки — пользоваться ими не представляется возможным.

        Так же интересует поддержка встроенного в php дебаггера (phpdbg), который в ядре уже почти год. По роадмапу там стоит вопросик, но каково реальное положение дел? Вообще планируется или продолжите диалог с разработчиками, чтоб они заюзали dbgp?

        З.Ы. Спасибо за незаменимый продукт! =)
          +1
          Пока точно неизвестно, но мы уже в процессе (как можно заметить по релизу), голосуйте за youtrack.jetbrains.com/issue/WI-27468. По количеству голосов можно понять, насколько эта фича важна для PHP сообщества.
            0
            Спасибо, а что по поводу phpdbg?
              0
              Тоже есть тикет, но пока phpdbg недостаточно хорошо работает сам по себе (по сравнению с xDebug и Zend Debugger).
              youtrack.jetbrains.com/issue/WI-21414
                0
                Да, переписку давно не читал. Причина в принципе понятна, благодарю.
          +4
          Code Complition по Ctrl+J (как советуют в блоге) почему-то в файле PHP показывает подсказки для Bootstrap: image
            0
            А почему нет? Ведь в PHP файле вполне может быть html
              +3
              Но это даже не строка. В какой ситуации после
              $data['images']

              может идти кусок html/css кода?
              +2
              Bootstrap плагин, к сожалению, не продукт JetBrains, попробуйте обратиться к его автору за разъяснением: plugins.jetbrains.com/plugin/7390?pr=phpStorm.
              +6
              Спасибо Вам ребята за продукт!
                0
                Пожалуйста подскажите, как по кнопке «точка» раскрывать указатель "->" например «this.» должно раскрыться в «this->». Qt creator такая возможность реализована отлично.
                  +1
                  Пока такой возможности нет. Голосуйте, пожалуйста, за youtrack.jetbrains.com/issue/WI-551
                    +1
                    А что если точка предполагает конкатенацию? Вы возразите, мол, объекты не конкатенируют. И будете правы. От части. От части, потому что есть такая магия как __toString(). Получится, что такая фича перекроет вполне легитимную возможность php. Может не самую часто используемую, но тем не менее. Так что если такой функционал и делать, то исключительно как опцию, отключенную по дефолту.
                    +2
                    Ждал Remote Edit все эти годы. Спасибо!
                      +1
                      Спасибо Вам, ребята, за Продукт!
                        +2
                        А почему нельзя создать свои правила для Postfix Code Completion?
                          +1
                          Пока нельзя. Голосуйте, пожалуйста, за реквест: youtrack.jetbrains.com/issue/IDEA-122443
                            0
                            А толку? Сколько уже людей за codeception support проголосовали, а воз и ныне там.
                          +1
                          Использую фичу annotate для файла, но теперь, как я понимаю, там не отображаются некоторые изменения.

                          В моем случае: поменял в csv файле все строчки (убрал лишний пробел в середине строки).
                          Коммичу, но в annotate не отображается этот коммит. Это ок?
                            +1
                            Все очень круто, спасибо, но не могу слезть с семёрки, новый Шторм недостаточно быстрый даже для моего современного ноута. Пока сидел на eap, испытывал одно раздражение. Может проблема в богомерзкой yosemite? Хотя я качал соответствующий релиз под неё.
                              +1
                              А вы пробовали версию со встроенной JDK (специально для Yosemite)?
                                +1
                                > Хотя я качал соответствующий релиз под неё.

                                я это и имел в виду
                                  +1
                                  А без неё пробовали? Если пробовали, то с какой версией Java?
                                    +1
                                    А без неё мне и в голову не приходило скачивать обычный дистрибутив, когда написано, что для таких как я есть особенный пакадж :)

                                    Что до явы, которая у меня установлена отдельно, то вот:
                                    $ /usr/libexec/java_home
                                    /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
                                    Надо сказать, семерка тоже шалит под ней. Например, новые окна проектов открываются в максимально сжатом виде, видны только три контрола по изменению их границ.
                                      +1
                                      Попробуйте без встроенный Java и пропишите свою 1.7, как вот тут описано: intellij-support.jetbrains.com/hc/en-us/articles/206827547-Selecting-the-JDK-version-the-IDE-will-run-under?
                                        +1
                                        Уже пользовался этой статьёй, через правку plist Шторм после вообще не запускается :)
                                          +1
                                          Если есть возможность, попробуйте, пожалуйста, 1.6 версию.
                                            +1
                                            Отпишусь через пару недель, сейчас не могу сказать лучше/хуже. :)
                                            Подправьте документацию немного. Если я в шелле устанавливаю переменную IDEA_JDK с путём до JDK, то на неё Шторм не реагирует, зато работает PHPSTORM_JDK
                                              +1
                                              Спасибо, сейчас переадресую информацию.
                                              Отписывайтесь через пару недель в intellij-support.jetbrains.com/anonymous_requests/new, новые тикеты проверять легче. :)
                                                0
                                                отписываюсь, как и обещал, через 4 месяца. Восьмерка и девятка нормально работают под обычной маковской Явой 1.6, проблема была именно в специальной сборке под Ёсемити
                              +2
                              Эх, опять не исправили этот баг: youtrack.jetbrains.com/issue/WI-16410
                                +2
                                Уже второй точно, может третий релиз прошу поправить баг с поддержкой трейтов, PHP 5.4 всё-таки!
                                И PhpDoc для методов до сих пор не исправили.
                                Куча новых фич, и всё те же баги, что и год назад…
                                  +1
                                  Вы говорите про youtrack.jetbrains.com/issue/WI-16368?
                                    +2
                                    Нет, о youtrack.jetbrains.com/issue/WI-17671
                                    Он Major, заведен ещё на 7.х, но исправления нет, это создает мне сложности каждый день.
                                      +2
                                      По поводу второго: youtrack.jetbrains.com/issue/WI-18194
                                      Critical, со времен 6.х, в последнее время после уточнения типов просто ужасно мешает, ещё больше чем баг с трейтами, потому что для того хоть обходные пути есть.
                                        0
                                        Сейчас уточню по поводу ETA у разработчиков.
                                          0
                                          Что-то сказали? Уже несколько EAP версий вышло, фичи новые добавляют, а баги годами висят.
                                    +1
                                    Поддержка HiDPI — это хорошо. Но пока неидеально:

                                    1. Размер шрифта, ранее указанный в поле Size в окне «File → Settings → Editor → Colors & Fonts → Font», при последующем открытии этого окна ошибочно удваивается (при системном масштабе 200%; видимо, умножается на коэффициент, зависящий от системного значения DPI).

                                    2. Текст совета при запуске отображается очень мелко — видимо, без учёта реальной плотности точек.
                                    +2
                                    Большое спасибо за «Поддержка удаленных PHP интерпретаторов». Незаменимая фича при работе с vagrant
                                      0
                                      Скажу глупость, но не могу удержаться: а будет ли возможность написания плагинов для PhpStorm, на PHP?
                                        +1
                                        Пока таких планов нет.
                                          0
                                          Можно попробовать на J-PHP
                                            0
                                            У него надо бутстрап подправлять, чтоб нормально вклинить, но да, как вариант, джава бриджи на нём пишутся «на ура».
                                          0
                                          Даже если окно Remote Host открыто, при попытке загрузки файла на удаленный сервер происходит повторная авторизация. В предыдущих версиях этот костыль работал, в 9-ке его зачем-то сломали :( Теперь каждая загрузка файла требует около секунды на авторизацию.
                                          0
                                          Поддержка PHP 7, пока что, оставляет желать лучшего даже на уровне «return type hints». А вот «remote edit» — приятная штука!

                                          Скриншотишка
                                          PHPStorm 9
                                          +2
                                          Эх, перемещение курсора между открывающим/закрывающим тегами в php-файлах так и не починили, второй год жду youtrack.jetbrains.com/issue/WI-20474.
                                          Попутно ещё что-то ухучшилось в работе с js-файлами. В одном из проектов стадия «syntax analysis» даже после мелкой правки js-файла занимает порядка 12-14 секунд (со взвыванием кулера макабука и обжиганием ног). Тот же файл с тем же конфигом на 8.0.3 — менее двух секунд.
                                            0
                                            Пришлите, пожалуйста, нам cpu snapshot на анализе этого js-файла, как описано тут. Спасибо.
                                            0
                                            А ssh jumphost появился? (про полноценную поддержу .ssh/config уже и не прошу)
                                            –7
                                            Скриншоты phpstorm из-под Yosemite — это стеб? Он же неюзабелен там совершенно (((
                                              0
                                              А я и не знал.

                                              Работал с PhpStorm в Yosemite c бета-версий, сейчас работаю в El Capitan — нареканий почти нет.
                                                –1
                                                Вы с виндой сравнивали?
                                                Дикий фликеринг на эппловской Яве, бешеные тормоза при скролле текста на штормовской. С большими проектами работать просто невозможно (а для маленьких шторм и не нужен).
                                                Саблайм по сравнению со штормом на йоземите как Феррари в сравнении с жигулем.
                                                  0
                                                  Я конечно всё понимаю, но лично у меня HP Mini тысяч за 20-30, и там вполне себе уживается шторм вместе с запущенным браузером и прочими плюшками. Ничего не тормозит и не глючит (правда индексирует дофига долго), а это нетбук. Фиг знает Laravel 5.1 проект объёмом в 39 метров большой или маленький проект, но могу по крайней мере заверить, что проблема у Вас скорее всего в железе (очень старое и слабое), т.к. судя по заверениям разработчиков (и участников) — это не проблема софта (Макоси\Джавы).

                                                  >> Саблайм по сравнению со штормом на йоземите как Феррари в сравнении с жигулем.

                                                  Скорее как Боинг по сравнению с велосипедом. Велосипед быстрее на старте всё же. Ну а дальше…
                                              0
                                              Как с производительностью для огромных файлов больше 2000 строк? Над некоторыми WP проектами довольно сложно работать в 8-ой было…
                                                0
                                                Очень сильно зависит от конфигурации (ОС+JDK версия+многое многое другое), если у вас будут какие-либо проблемы, пишите мне в саппорт: intellij-support.jetbrains.com/anonymous_requests/new.
                                                  0
                                                  Может список рабочих связочек ОС+JDK, для Win 8.1x64 (build 9600) имеется?
                                                  многое многое другое
                                                  даже сложно представить, что же ещё влияет на эти аномальные тормоза, отключил уже все проверки инспекции Spelling и прочее, такое впечатление что на нажатие клавиши он всё равно парсит весь документ, как-бы отключить это а не оптимизировать?
                                                    0
                                                    P.S.
                                                    Если что у меня SSD, 8Гигов не самой медленной DDR-3 и A-10 процессор.
                                                    0
                                                    На линухе с oracle java 7 довольно печально, как и в 8. При наборе имени переменной (i5-3470 CPU @ 3.20GHz):
                                                    image
                                                      0
                                                      Вобщем: воз и ныне там. Интересно, помогает, если закомментировать остальной код на время редактирования нужного участка?
                                                        0
                                                        В таком случае скачет 50-90% одного ядра. Но, хотя бы, GUI не виснет, можно нормально набирать.
                                                        Мне совершенно не понятно, что там нужно делать такого срочного в фоне, чтобы так тормозить: при вводе простого целого числа (не нужно никаких подсказок выводить) отъедает 60%.
                                                          0
                                                          А не пробовали отключать Inspections в данном файле (мужичок в правом нижнем углу)? Бывает, что файл насыщен трудноперевариваемыми конструкциями, и подвисает проверки синтаксиса и другие Inspections.
                                                            0
                                                            Больше всего помогает «Power Save Mode» — дает почти не тормозящий при вводе интерфейс. Сами инспекции не особо сказываются.
                                                    0
                                                    При дебаге все русские символы стали крякозябрами. Где это можно поправить?
                                                      0
                                                      Кажется, это баг, опишите свою ситуацию тут, пожалуйста: youtrack.jetbrains.com/issue/WI-27963
                                                        0
                                                        Столкнулся с этой же проблемой. Оказалось — в настройках проекта стояла неправильная кодировка. Проверьте для начала :)
                                                        –3
                                                        Парни. А почему на картинке нарисовали шаттл, а не буран?
                                                          0
                                                          А почему нет? Выглядит красиво!
                                                          0
                                                          Пользуясь случаем, хочу спросить, можно ли как-то перенести класс в другой неймспейс так, чтобы это изменение отразилось по всему проекту без ручной правки всех файлов?
                                                          Нужно именно перенести один из классов исходного неймспейса в другой неймспейс, а не переименовать исходный неймспейс.
                                                            +1
                                                            Правый клик на класс > Refactor > Move.
                                                            –2
                                                            Когда уже почините один из важных багов youtrack.jetbrains.com/issue/WI-20248#tab=Comments?
                                                            Невозможно обновить файл хоть на сколько-нибудь траффиковом сайте, если на нём есть smarty и apc, файл ещё не залился, а они уже начинают его парсить и кэшировать, что приводит к падению сайта, нужно это заметить и повторно залить файл.
                                                            Причём почему-то в 6.0 это было менее заметно, в 9.0 так вообще почти каждый раз.
                                                              0
                                                              К сожалению, точных дат нет, но тикет помечен как открытый, значит, девелопер про него знает и пофиксит в соответствии со списком приоритета feature реквестов.
                                                              0
                                                              Огромное вам спасибо за такую нужную фичу как «virtual spaces». Без неё умер бы от нервного тика.
                                                                0
                                                                Один только минус — в режиме «use soft wraps» вертикальная позиция курсора сбивается на свёрнутых линиях. Вот бы это починить.
                                                              0
                                                              WI-12654, WI-17671, WI-9388 — есть ETA? Major, open, давно.
                                                                0
                                                                ETA, к сожалению, нет, но раз они открыты, то разработчики про них знают, когда будет возможность — пофиксят.
                                                                0
                                                                Очень не хватает функции запуска/остановки bash-скрипта при открытии/закрытии проекта.
                                                                0
                                                                Извините за оффтоп.
                                                                Планируется ли добавить в IdeaVim регистр "=, или может быть есть какой-то плагин, который реализует схожий функционал?
                                                                vimcasts.org/episodes/simple-calculations-with-vims-expression-register
                                                                0
                                                                «а также довели до конца поддержку удаленной разработки»

                                                                Ребята, почему вы категорически не хотите сделать keep-alive для ftp/ssh? И зачем вы сломали единственный хак с табом Remote Host (да, я знаю что предлагается заменить один из файлов на старую версию, чего же вы сами его не заменили?)

                                                                Я вам плачу уже 5 или 6 лет, за эти годы не добавилось ни одной фичи, которая бы мне реально пригодилась.

                                                                youtrack.jetbrains.com/issue/WI-674
                                                                6 лет, 244 голоса, 238 комментариев

                                                                Ответ Елены, что вы используете для FTP библиотеку, которая не поддерживает keep-alive (когда при открытом табе Remote Host всё отлично поддерживалось, пока вы и это не сломали) — таким ответом вы можете пудрить мозги менеджерам, а не разработчикам.

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

                                                                Очень надеюсь что вы уже работаете над этим багом, тогда я смогу с чистой совестью называть PHP Storm лучшей IDE и каждый год продливать свою лицензию.
                                                                  +1
                                                                  Это, конечно, адский оффтопик, но я бы вам посоветовал освоить специализированные инструменты для деплоймента и закончить мучения. Например, deployer.org.
                                                                    0
                                                                    Скорей всего мы говорим о разных вещах. При чём тут вообще процедура деплоймента? Речь идёт о функции «Automatic Upload» в IDE. Естественно он аплоадит не на продакшен, а на dev-сервер разработчика с определённым окружением. Тем, кто гоняет веб сервер под виндой эта функция не нужна.
                                                                      0
                                                                      Под дев окружение деплой точно такой-же — шелл скрипт вида: `git pull origin stage && composer install`.

                                                                      Фиг знает зачем так извращаться с ftp, ну разве что поддержки гита нет… Правда я таких серверов\хостингов уже сто лет как не видел.
                                                                        0
                                                                        Отличный совет — накодил, пушнул и полез смотреть что получилось. Очень продуктивно!
                                                                          0
                                                                          эм, стейдж != локальный сервер.
                                                                        0
                                                                        А. Я для такого vagrant использую.
                                                                      0
                                                                      Так давайте же организуем Break-SFTP-con, как завещал нам Alex R.

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