Обзор PHPStorm

PhpStorm splash screen.jpgПрофессия обязывает каждый день писать на php и поэтому первый важнейший инструмент после головы для меня является среда разработки (IDE). До сих пор я сидел на Zend 5.5, но столкнувшись с PhpStorm 1.0 от чехов русских с JetBrains сразу перешёл на него.

Понятно что редактор - дело субъективное и многое зависит от проектов с которыми вы работаете. Zend 5.5 мне нравился удовлетворительной скоростью и простым доступом к ftp. Я знал что там ещё были всякие дебаги, интеграция с SVN и sql-серверами но практически их не смог применить. Я пробовал Netbeans, Aptana и PDT, Zend 6 но во все они медленные особенно при индексации файлов и монстроидальный интерфейс с кучами кнопочек. Поэтому и начну сразу с недостатков.

PhpStorm welcome screen

Недостатки

  • Невозможно сразу начать работать при медленных (>5 сек) сетевых соединениях (VPN) и обращению к файловой системе
  • Синхронизация файлов при deployment'е удалённого проекта не совмещает различия, а просто перезаписывает удалённые файлы, что делает невозможным изменение файлов двумя пользователями. Есть возможность ручной проверки одиночного файла, но сверять каждый раз самому неудобно.
  • Подвисание процесса при долгой индексации дополнительных папок к проекту и отсутсвие полоски прогресса этого процесса. При обычной индексации всё-таки прогресс показывается и может уходить на задний план.
  • Редактирования по FTP нету. Можно файлы читать, но для полноценного редактирования надо делать локальную копию проекта с настройкой синхронизации и deployment'а, а при переходе с одного IDE на другой и большом количестве проектов ждать скачивание каждого - жуть
  • Автосохранение файлов сразу во время редактирования, хотя и компенсируется "локальной версией изменений файла", однако многим может быть непривычно при переходе из других IDE.
  • Глупое автодополнение тэгов в html режиме (вечно мне добавляет comment тэг!). В редактировании php кода методы не подсказываются автоматически а только с нажатием Ctrl+Space, видимо из-за погони за скоростью.
  • Импорт remote-проекта без возможности фильтра ненужных папок. Точней этот фильтр появляется в настройках после того как вы скачаете весь проект. Очень удручающая ситуация когда есть папка с кучей картинок которые не нужны. Конечно есть фильтр типов файлов с масками, но это не совсем то
  • Пугающие настройки. Их просто много. Разве что они понятней чем в Эклипсе - сразу разбиение на настройки проекта и настройки IDE.
  • Непривычность клавишных связок (hotkey binding) - например у меня несколько раз возникала ситуация когда я двигался назад по истории изменений (Undo), а потом хотел вернуться нажимая Ctrl+Y и вместо этого терял Redo-историю потому что Ctrl-Y на самом деле удаляет строку
  • Мало плагинов. Из серверов управления задачами только Jira и собственній youtrack. То же касается систем версионирования (Есть CVS, SVN, git, perforce). В основном они пишутся для общего редактора IntelliJ idea, а php-просто как частный случай

Как у всех..

PhpStorm settings plugins screen.pngРедактор визуально очень похож на все существующие IDE - динамические панели как у eclipse но с меньшим визуальным шумом иконок. Тут собственно меню, панель дерева файлов, панель структуры класса, внизу дополнительные панельки для todo, версионирования, иерархий и удалённого редактирования (появляются по мере необходимости).

Очевидно что редактор не компилятор и не настолько умён что-бы понимать переменные при использовании extract() или при переменных с динамическими именами через $$var — анализ этого на лету просто нереально ожидать и соответсвенно в проектах такие дела подсвечиваются как ошибки деклараций переменных. То же касается закриптованных частей через Ioncube или Zend guard.

Про автодополнение с Ctrl+Space я уже говорил, так же тут и Ctrl+click работает для перехода к собственно декларации метода или класса. И Ctrl+D дублирует строку. Тут есть и закладки строчек через Ctrl+Shift+цифра. Есть тут и поддержка PHPdoc и @todo синтаксиса.

Основные фишки

Главные прелести редактора - хорошая скорость в обычном редактировании текста - ничего не прыгает, не задумывается на три секунды покуда я печатаю.. Вобщем есть "основа" которая дополнена мелочами в которых и кроется секрет хорошего блюда:
  • Поиск классов Ctrl+N и файлов Ctrl+Shift+N в том числе и со звёздочками (wildcard). Очень полезно и быстро, потому что файлы как правило разбросаны в разных ветках дерева и консоль всегда оперативна
  • Скролл при поиске или при навигации по своим закладкам строк через Ctrl + цифра. Очень помогает не потеряться и интуитивно понимаешь в какую сторону файла ты прыгаешь.
  • Рефакторинг имён файлов, классов и методов во всём проекте и/или поиск их использования. Потому что часто просто боишься поменять старое название на более информативное потому что не помнишь где это используется, а искать как фразу через Ctrl+F запаришься
  • Подключение внешних папок. Скажем если у вас 10 проектов в которых используется повторяемый фреймворк (PEAR к примеру) или закриптованный код, то можно подключить внешнюю папку чтобы IDE понимала пространство имён
  • Версионирование. Как встроенная история изменений, так и отлично встраиваемый SVN со всякими диффами, определённо лучше TortoiseSVN.
Приятно удивили и некоторые мелочи
  • Поддержка smarty шаблонизатора. С одной стороны для меня это позитив - я его использую. С другой стороны так же обойдены стороной остальные фреймворки для которых тоже неплохо бы иметь плагины что-ли для быстрого запуска комманд генерации кода и тп.
  • Иерархия вызовов метода и вызываемых методов в hierarchy блоке
  • Статус и ручная чистка памяти в статус-баре - сразу говорит о заботе
  • Локальная история изменений файла
  • Перетаскивание строки или целого выделенного блока с сохранением табуляции через Ctrl+Shift+Up/Down вместо того что-бы делать Copy-Delete-Paste с ручным форматированием
  • Вернуться к последнему месту редактирования Сtrl+Shift+Backspace

Кроме этого в редакторе есть простор для изучения до которого я ещё не дорос:

  1. XDebug для профилирования скриптов.. Для удалённого проекта надо что-бы расширение на сервере было установлено, поэтому всюду использовать нельзя.
  2. PHPUnit для автоматического тестирования кода
  3. SASS для более гибкого написания css
RSS

Комментарии

  • Sam
    Почему чехи-то? Сплошные русские вроде.

    Про то, что не нравится в их трекер уже отписался?
  • Артём Курапов
    Де-юре на офф сайте написано что из Чехии. А то что на форуме и исправлениями русские уже де-факто :)

    До меня уже на хабре по десять раз все высказались что да как - ты же видел.
  • nicity
    Можете что-нибудь поконкретнее сказать про
    *Глупое автодополнение тэгов в html режиме *?
  • Артём Курапов
    Разумно было бы дополнять тэги либо по популярности использования, либо по алфавиту.. а когда я пишу одно, а он подсовывает совершенно другой тэг да ещё и закрытый.. то это нервирует
  • Sergei Kuznetsov
    Ты окончательно на него пересел? Я до сих пор сижу на ZS 5.5 но она не поддерживает ПХП 5.3 что скоро заставит её сменить. Шторм же сильно тормозит.
  • Артём Курапов
    Да, постепенно перехожу - для каждого удалённого проекта приходится делать импорт. Со скоростью проблем особо небыло - только некоторые части иморта тормозили.
  • Alexander
    Статья по настройке командной строки в PhpStorm http://plutov.by/post/command_line_php_storm
  • Skiv
    По моему, локальная история это не просто "приятная мелочь", одна из лучших штук в шторме.