Решил попробовать часто упоминаемую в последнее время IDE для работы с PHP от JetBrains, называется phpStorm. Так как до этого несколько лет использовал IDE NetBeans, сравнивать буду с ней. На объективность даже не рассчитывайте, этот пост основан на личных впечатлениях в первые N дней работы. Некоторые недостатки на самом деле наверняка окажутся “фишками” новой программы, просто я в достаточной степени прикипел к детищу Sun (ныне Oracle). Итак, начнем-с.
- Выглядит все достаточно стандартно. Сверху панель инструментов и табы, слева – вспомогательные навигационные панели типа project browser.
- + Достаточно удобно работать с “горячими” клавишами. В дистрибутиве идет PDF-файл с настройками.
- - Необходимо вручную прикрутить переименование файлов по клавише F2. Это одна из самых моих часто используемых “горячих” клавиш, поэтому столкнулся практически сразу.
- - Я привык выделять текст и вставлять символ кавычки (одиночную или двойную). Netbeans обрамлял кавычками выделенный текст, а вот PhpStorm тупо заменил текст.
- + Подсветка табов. Группируем файлы по маске (это называется scopes) и назначаем им разные цвета. Также в дропдауне “View as:” есть возможность фильтровать файлы проекта именно по этим маскам. Однако не нашел способов импортировать scopes из проекта в проект (судя по всему, это еще не реализовано) – это большой минус при использовании фреймворков.
- + Поиск классов (Ctrl + N) и файлов (Ctrl + Shift + N) по имени. Удобнейшая штука для того, чтобы подсмотреть, где, что и как реализовано.
- ? С трудом нашел, как подключить сторонние файлы, в частности фреймворк Kohana (system и отдельные модули). Изначально все добавил через
settings->directories, но наблюдать все подключенные папки вперемешку с основным проектом не понравилось. Далее меня заинтересовал пункт “external libraries” в project-браузере. В общем, чтобы подключить сторонние папки, надо открытьsettings->project settings->php, и там установитьinclude paths. Достаточно долго и неочевидно, по крайней мере по сравнению с Include Path в Netbeans.
- + В контекстном меню файла есть возможность быстро перейти к файлу в Explorer’e.
- - По умолчанию измененный файл никак не выделяется. Чтобы включить эту функцию, идем в
Settings->IDE Settings->Editor->Editor Tabs. Ставим галочку на “mark modified tabs with asterisk“. Появившийся на табе значок выглядит убого. Зато если в файле есть синтаксические ошибки, они будут подчеркнуты волнистой красной линией а-ля MS Word.
Попутно выясняется, что одновременно будут открыты только 10 табов – каждый последующий таб будет закрывать наименее используемый из уже открытых. Зато табы можно переместить влево или вправо – удобно при широкоформатном мониторе.
- - Вообще странно сделано поведение при закрытии модифицированного файла. Вместо того, чтобы предложить сохранить изменения, IDE просто закрывает таб. Если открыть его заново, убеждаемся, что изменения остались, но сам файл еще не сохранен. А вот если еще и закрыть IDE, то изменения сохраняются автоматически. Не самое очевидное поведение.
- + Закладки-подсказки справа от открытого скрипта. Красные для ошибок (обычно парсинга, но также красным выделяются вызовы методов без указания обязательных параметров), желтые – для потенциальных ошибок (warnings), синие – TODO-заметки (определяются редактором автоматически, попадают как “правильные” @TODO, так и обычные todo комментарии). В верхнем правом углу скрипта показывается итоговый квадратик-анализатор к текущим статусом проверки. При наведении на него можно увидеть, сколько каких закладок найдено.
- + В правой части удобные пиктограммы, показывающие, что данный метод переопределяет поведение своего предка, либо же найдены потомки с таким методом.
- - Странновато ведут себя подсказки (
Ctrl + Alt + Пробел). Они не всегда разворачиваются полностью, оставляя прокрутку. Хотя вроде бы место позволяет показать всю подсказку целиком. Не работает подсказка дляparent::. И вообще, все не могу привыкнуть, что хинты надо вызывать вручную (судя по всему, это сделано для увеличения скорости работы IDE).
UPD. Пока писал статью, вышла новая версия 98.91, в которой появилась возможность разрешить автоподсказки в настройках (точнее запретить, т.к. по умолчанию они включены). Работает, но как-то коряво (может это из-за подключения двух мониторов?):
- - Иногда кушает многовато памяти. При двух открытых небольших скриптах потреблял аж 200Мб оперативки. Закрытие этих файлов, а также закрытие проекта ничего не изменили. Только заново запустив IDE, получил потребляемость 60Мб (и это при отсутствии открытых проектов). При этом, как и в 1.02, имеется сборщик мусора, который несильно меняет ситуацию
Правда, пики потребления памяти какие-то непредсказуемые, IDE может достаточно долго работать практически незаметно и ненапряжно. - + Понравилось форматирование отступов больших блоков текста – выделяем кусок кода и жмем
Tab(илиShift+Tab, если двигаем влево). - + Нравится подсветка неиспользуемых переменных серым цветом.
- +- Вообще, в целом очень много различных настроек. Даже не знаю, плюс это или минус. Есть поиск по настройкам. Но лично мне было не очень удобно каждый раз идти в
File->Settings, чтобы что-то поменять. Те же Directories или Include Paths можно было и в контекстное меню продублировать. - + Встроенная поддержка различных систем контроля версий (Git, SVN, Mercurial). Пока что Git сильно не ковырял, но использовать буду наверное больше как справочный GUI-клиент, основные операции все равно останутся в консоли. На вскидку у меня Git отказался работать через Proxy, хотя те же плагины обновлялись нормально.
В целом, очень приличный продукт. Проект постоянно развивается, новые сборки появляются каждую неделю. Когда закончится триал, буду думать насчет покупки DEV-лицензии.
Ссылки:
PS. Повторюсь, “обзор” поверхностный, это по сути первые впечатления от работы с IDE, так что прошу сильно не пинать












@biakaveron
Просто поставить нетбинс 6.9.1 (не настраивая), открыть любой кохановский файл, тот же bootstrap и кликнуть Source->Format.
И нетбинс форматируя код, разорвет строку
<?php defined('SYSPATH') or die('No direct script access.');на две строки:
<?php
defined('SYSPATH') or die('No direct script access.');
На версиях до 6.8 (включая 6.8) такой проблемы нет. Узнавал у товарища, такая же ситуация и он откатился на 6.8. Я тоже пока на 6.8 сижу.
@bagir
Посмотрите в настройках Editor->Formatting->(language PHP)->(category “blank lines”), возможно там.
Кстати, кто-нибудь знает, как настроить PhpStorm, чтобы он делал отступы табами, а не пробелами? Например, когда я открываю массив (
array() и нажимаю Enter, у меня генерируется отступ в три пробела (т.е. длина таба), но не таб. Аналогично с внутренностями методов и классов (отступ после открывающей после фигурной скобки)@biakaveron
File | Settings | Code Style | General | Tabs and Indents
Выбираем закладку PHP, тикаем “Use tab character” и настраиваем отступы под себя (примечание: все значения задаются в количестве пробелов. Для себя я настроил 4, 4, 4)
> Посмотрите в настройках Editor->Formatting->(language PHP)->(category “blank lines”), возможно там.
Сейчас любопытства ради пробежался по настройкам переноса строки в 6.9.1 — действительно не получилось найти штуку, которая влияет на перенос строки после <?php… *scratch*
@biakaveron
Попробовал все настройки поизменять, и как и avis не обнаружил ничего влияющего на перенос строки после <?php.
Вот незадача
@Andriy Bazanov
У меня все это было настроено. Поковырявшись как следует, нашел что-то похожее – в
Code Style|Wrapping and BracesсекцияArray Initializerдолжна содержать значениеChop down if long. Все остальное не помогало.Блин… то ли у меня руки крюки, то ли не понимаю чего-то, но уже неделю не могу нормально ни одну IDE под php состыковать с denwer