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

Хочется иметь нормальную реализацию IntelliSense, а не “деревянную” пародию на него в виде заранее определенного списка методов и констант языка, “вываливающегося” во время работы по поводу и без повода в виде полного списка. IntelliSense обязательно должен “знать” о всех используемыми вами классах, о их методах и переменных, то есть подключил через #include файл с определением своего класса, и редактор сразу же его подхватывает, подсказывая информацию о всех “внутренностях” объектов этого класса.

Не помешали бы так же подсказки во время набора названия функции в виде краткого описания функции (принимаемые параметры, есть ли перегруженные функции и т.п.). Особенно этого не хватает для самописных функций, в некоторых типичных редакторах я видел такие подсказки, но только для родных функций PHP. Ах да, еще очень удобно быстро переходить к определению функции из места ее вызова. Вообще, много чего еще хочется, причем все эти возможности считаю лишь толикой самых необходимых вещей в процессе кодинга и никак не излишеством…

Пример работы Intellisense в Visual Assist

Можно сказать, что в этом смысле моим идеалом является связка MS Visual Studio + Visual Assist, которую я использую при работе с C# и C++ (Visual Assist в этой связке просто как спасательный круг). Когда лишний раз не лезешь в другие файлы, чтобы посмотреть принимаемые параметры функции или названия тех или иных членов класса, это в любом случае способствует производительности и “приятности” процесса. Отсутствие среди своего инструментария такого редактора очень удручает, учитывая все большую (от версии к версии) объектно-ориентированность PHP.

И вот оно!

Логотип KomodoВсе же нашел для себя достаточно неплохой редактор - Komodo Edit. Если вы, как я, пользовались обычными редакторами, заменяющими стандартный “блокнот” и тоже жаждали человеческого IntelliSense, советую обязательно попробовать его. Он ко всему еще и бесплатный (о платной версии ниже) и работает на базе мозиловского фреймворка (XPFE), что делает его так же мультиплатформенным.

Komodo Edit

Этот редактор не идеал, в нем много хорошего, при этом, конечно же, ему есть куда еще развиваться. Но, в целом, в первые дни знакомства с ним у меня не было предела радости :-)

Стоит так же отметить поддержку и других языков (Perl, Python, Ruby, Tcl), а так же JavaScript, CSS, HTML, XML и много другого (судя по списку файлов, которые он может открыть, он знает еще много языков и технологий, но не уверен насчет работы IntelliSense для них всех). Приятно удивила поддержка многих популярных фрейворков для JavaScript (для моего знакомства с jQuery это было кстати).

Я наверняка еще не успел изучить весь функционал Komodo Edit, но некоторые моменты хотел бы описать.

Первым делом я настроил под себя цветовую схему подсветки кода для PHP (Edit -> Preferences… -> Fonts and Colors), так как привык уже к цветам из Notepad++.

Настройка цветовой схемы для подсветки PHP кода

Так же полезным дополнением оказался плагин, который находит все TODO в открытом проекте или файле и выводит их в один список (на подобие того, как это реализовано в VS). И плагин, позволяющий видеть в виде одного списка все классы и методы, определенные в открытом файле (Source Tree) для быстрой навигации по ним.

Вообще перед использованием Komodo имеет смысл изучить его настройки, изменив те или иные параметры под себя. Я, к примеру, еще переопределил горячую клавишу для перехода к определению функций (сделал F12, как в Visual Studio :-) ).

В целом все работает достаточно хорошо, “земля и небо” по сравнению с кодингом в обычном редакторе.

Немного неудобно, что для полноценной поддержки IntelliSense обязательно нужно создавать файл проекта (его нужно просто сохранить в корневой каталог сайта). То есть если открыть один файл вне рамок проекта Komodo, все инклуды, прописанные в нем, не будут обрабатываться как-либо, и, соответственно, Komodo не будет ничего знать о функциях и классах, определенных в подключаемых файлах. Но, в целом, это маленькое неудобство пережить можно :-)

С другой стороны, создание файла проекта дает возможность выполнить более тонкие настройки проекта, которые сохраняются и при каждом открытии проекта, Komodo будет помнить о них. Через него, к примеру, можно указать дополнительные директории для того, чтобы Komodo при работе с вашим проектом все время имел ввиду структуру классов и методов (для IntelliSense и различных подсказок), реализованных в файлах, которые лежат в подключаемой директории, даже если эти файлы ни как фактически не подключены (через include или require) к редактируемому файлу. Еще можно производить поиск или замену текста во всех файлах проекта. Так же, Komodo запоминает сделанные вами закладки внутри кода (Ctrl+F2) для каждого файла, это очень удобно.

Немного неприятно удивило, что Komodo Edit ничего не знает о встроенных в PHP классах (может, я делаю что-то не так?). К примеру, если нужно использовать класс mysqli:

$mysqli = new mysqli(HOST, USER, PASS, MBASE);
if (mysqli_connect_errno()) {
	print "Connect failed: ".mysqli_connect_error();
	exit();
}
$mysqli->query('INSERT.......');
$mysqli->close();

Когда после написания слова “$mysqli” я начинаю обращаться к методам этого объекта (пишу знак “->”), Komodo Edit не хочет подсказывать ничего о методах query, close и т.д., а в строке состояния ругается, что, мол, в глаза не видел определения этого класса… При этом со встроенными в PHP функциями проблем нет, к примеру, о семействе функций mysqli_* (оберткой над которыми и является класс mysqli) Komodo прекрасно знает. Но, надеюсь, эту недоработку когда-нибудь поправят. Если же вы, к примеру, работаете с базой через свой класс - обертку (или через что-то вроде PEAR), то проблем с IntelliSense не должно возникать.

Один раз у меня случилось так, что при редактировании js файла Komodo не понял, какой Java Script фреймворк я использую. Но это, к счастью, всегда можно поправить в его настройках (Edit -> Preferences… -> Code Intelligence).

Окно настройки, позволяющее указать используемые Java Script фреймворки

Существует платная версия Komodo, называемая Komodo IDE. Как я понял, основное отличие от Komodo Edit в функциях, свойственных многим IDE. Комодо IDE имеет встроенные инструменты для работы с системой управления версиями (SVN) и отладчик кода.

Кстати, в Komodo Edit все же есть примитивный отладчик, который на ходу уведомляет о таких мелких ошибках, как забытая точка с запятой в конце строки, незакрытая скобка и т.п. Такие ошибки он подчеркивает красной волнистой линией. Для того, чтобы такая отладка работала, нужно в настройках программы указать путь к исполняемому файлу PHP и php.ini (Edit -> Preferences… -> Languages -> PHP).

Указание пути к исполняемому файлу PHP и php.ini

Как видно, подобные настройки можно проделать и для всех остальных языков.

Послесловие

Komodo Edit теперь мой повседневный инструмент :-) Плюс, для коротких правок каких-то мелочей в эпизодических случаях я продолжаю использовать аналог продвинутого блокнота - Notepad++, то есть использую его по своему настоящему назначению.

До Komodo Edit я еще пробовал интересный плагин к Visual Studio, который называется VS.Php. Он встраивается в Visual Studio и позволяет работать с PHP так же, как, к примеру, с C# (можно отлаживать код, работает IntelliSense и т.п.). Но как-то он не особо впечатлил, особенно на фоне своей платности. К тому же, как я понял, работая в нем можно полностью забыть про поддержку Java Script и т.п. Интересно еще то, что в нем точно так же, как в Komodo, не работает IntelliSense для классов, встроенных в PHP. Так же этот VS.Php конфликтует с Visual Assist.

Есть еще два подобных редактора, о которых я слышал, но как-то не случилось их попробовать (дальше лишь ИМХО и догадки на основе “слухов”):

  • Zend Studio – платный, по отзывам сложилось впечатление, что это нечто громоздкое и применимо в первую очередь ну в очень больших и сложных проектах, особенно он уместен, возможно, если проект создается на основе Zend Framework.
  • Eclipse – бесплатный, но отпугнул, скорее всего, своей “накрученностью”. Как я понял, его еще нужно уметь собрать под себя из различных модулей. В общем, как-то не возникло желания разбираться с тем, как его установить и настроить (но в свое время я все же пытался немного ;-) ), хотя, несомненно, кому-то он может очень нравиться.

***

Если кто-то посоветует какие-нибудь еще редакторы с оглядкой на мои “придирчивые” вкусы, буду очень благодарен. Так же было бы интересно услышать о каких-то дополнительных интересных особенностях Komodo от тех, кто им уже пользуется.

В общем, долой примитивную подсветку кода с вагоном ненужных функций! Это “наболевший” камень в огород постоянно появляющихся простых редакторов кода, выставляющих на передний план среди своих “достоинств” встроенный проводник по файловой системе или что-то вроде мини редактора/вьювера базы данных (ну зачем это нужно, если нет самых важных вещей именно для того, для чего изначально предполагается использовать редактор кода) и т.п. и т.д.. Почему-то почти каждый начинающий (хотя, может, не всегда начинающий) программист хочет “быстренько” сделать свой “мега” редактор, который часто вырождается в “опять что-то до боли знакомое”… очевидно, это традиция из серии “Hellow World!” ;-)

1 звезда2 звезд3 звезд4 звезд5 звезд (6 голосов, средний: 4.67 из 5)
Загрузка ... Загрузка ...