Правильный редактор для PHP
Веб-разработка 24.05.2008Иногда очень сильно не хватает какого-то хорошего редактора для PHP именно с точки зрения комфортной работы с кодом, что-то посерьезней, чем простая подсветка синтаксиса. При этом обычных редакторов пруд пруди, в которых, к сожалению, та же подсветка синтаксиса далеко не всегда корректно работает.
Хочется иметь нормальную реализацию IntelliSense, а не “деревянную” пародию на него в виде заранее определенного списка методов и констант языка, “вываливающегося” во время работы по поводу и без повода в виде полного списка. IntelliSense обязательно должен “знать” о всех используемыми вами классах, о их методах и переменных, то есть подключил через #include файл с определением своего класса, и редактор сразу же его подхватывает, подсказывая информацию о всех “внутренностях” объектов этого класса.
Не помешали бы так же подсказки во время набора названия функции в виде краткого описания функции (принимаемые параметры, есть ли перегруженные функции и т.п.). Особенно этого не хватает для самописных функций, в некоторых типичных редакторах я видел такие подсказки, но только для родных функций PHP. Ах да, еще очень удобно быстро переходить к определению функции из места ее вызова. Вообще, много чего еще хочется, причем все эти возможности считаю лишь толикой самых необходимых вещей в процессе кодинга и никак не излишеством…

Можно сказать, что в этом смысле моим идеалом является связка MS Visual Studio + Visual Assist, которую я использую при работе с C# и C++ (Visual Assist в этой связке просто как спасательный круг). Когда лишний раз не лезешь в другие файлы, чтобы посмотреть принимаемые параметры функции или названия тех или иных членов класса, это в любом случае способствует производительности и “приятности” процесса. Отсутствие среди своего инструментария такого редактора очень удручает, учитывая все большую (от версии к версии) объектно-ориентированность PHP.
И вот оно!
Все же нашел для себя достаточно неплохой редактор - Komodo Edit. Если вы, как я, пользовались обычными редакторами, заменяющими стандартный “блокнот” и тоже жаждали человеческого IntelliSense, советую обязательно попробовать его. Он ко всему еще и бесплатный (о платной версии ниже) и работает на базе мозиловского фреймворка (XPFE), что делает его так же мультиплатформенным.
Этот редактор не идеал, в нем много хорошего, при этом, конечно же, ему есть куда еще развиваться. Но, в целом, в первые дни знакомства с ним у меня не было предела радости
Стоит так же отметить поддержку и других языков (Perl, Python, Ruby, Tcl), а так же JavaScript, CSS, HTML, XML и много другого (судя по списку файлов, которые он может открыть, он знает еще много языков и технологий, но не уверен насчет работы IntelliSense для них всех). Приятно удивила поддержка многих популярных фрейворков для JavaScript (для моего знакомства с jQuery это было кстати).
Я наверняка еще не успел изучить весь функционал Komodo Edit, но некоторые моменты хотел бы описать.
Первым делом я настроил под себя цветовую схему подсветки кода для PHP (Edit -> Preferences… -> Fonts and Colors), так как привык уже к цветам из Notepad++.
Так же полезным дополнением оказался плагин, который находит все 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).
Существует платная версия Komodo, называемая Komodo IDE. Как я понял, основное отличие от Komodo Edit в функциях, свойственных многим IDE. Комодо IDE имеет встроенные инструменты для работы с системой управления версиями (SVN) и отладчик кода.
Кстати, в Komodo Edit все же есть примитивный отладчик, который на ходу уведомляет о таких мелких ошибках, как забытая точка с запятой в конце строки, незакрытая скобка и т.п. Такие ошибки он подчеркивает красной волнистой линией. Для того, чтобы такая отладка работала, нужно в настройках программы указать путь к исполняемому файлу PHP и php.ini (Edit -> Preferences… -> Languages -> PHP).
Как видно, подобные настройки можно проделать и для всех остальных языков.
Послесловие
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!”





(6 голосов, средний: 4.67 из 5)
24.05.2008 в 01:47
Рекомендую посмотреть VIM. Он позволяет многое настраивать, да что многое - вообще все. Правда у него есть одна тонкость - к нему нужно привыкнуть сборник статей про вим можно посмотреть у меня в блоге http://blog.seo-p.ru/search/label/vim
p.s. А зачем тебе так требуется работа с JS не ужели у тебя php код и js встречаются в одном месте?
24.05.2008 в 21:51
Самый продвинутый IntelliSense, который я встречал для PHP реализован Eclipse PDT/Zend Studio 6. А вот что касается HTML и JS — тут абсолютно всем IDE очень далеко до IntelliJ IDEA. Жаль, что поддержки PHP там пока нет.
25.05.2008 в 10:13
[quote]А зачем тебе так требуется работа с JS не ужели у тебя php код и js встречаются в одном месте?[/quote]
php И js может не часто встречаются в одном месте, но в одном проекте сколько угодно, и прыгать с одной иде на другую не очень радостное занятие. Комодо в этом отношении пока держит пальму первенства.
Zend IDE хорошая вещь, но только для php, как дело доходит до html и js - все его достоинства испаряются.
К VIM наверное очень долго придется привыкать, незнаю, но на комод я пересел за пол-часа и не жалею.
26.05.2008 в 16:28
Программер, у меня точно такая же ситуация с JS как описал Бирц.
Забыл написать об одной проблеме с IntelliSense для jQuery.
Если обращаться к объектам через сам jQuery (к примеру через $(”li”)), то Komodo понимает, что это за объект. Если же присвоить указатель (хотя не знаю насколько в JS применим термин указателей) на объект jQuery, в созданную переменную, то комодо заходит в тупик. Вот так:
var $tmp = $("li");
$tmp.НИЧЕГО_НЕ_ЗНАЕТ_ОБ_ОБЪЕКТЕ
Не удобный момент
Остается надеяться, что когда-то поправят…
Sam, нигде не нашел упоминания о том, что IntelliJ IDEA поддерживает JS (хотя может не доглядел), везде пишется, что он именно для Java. Или работа с JS там поддерживается как “побочный эффект” и она на самом деле присутствует?
30.05.2008 в 10:11
Eclipse + PDT + ZenDebugger|XDebug + FireBug (про Apach, PHP и MySQL молчу
). Думаю, это вполне хорошая связка. Говорят есть еще Aptana поверх эклипса для работы с JS, но я пока ее не осилил. Функций Эклипса мне оказаолось достаточно. Ну разве что, для работы со структурой базы я бы поискал какой-нибудь внешний CASE. Кроме того в Эклипсе мне приходится так же много работать с XSD и XSL, а он имеет и для них плагины. И более - он же имеет плагины для работы с Java. Так что, ИМХО он рулит.
30.05.2008 в 10:12
Забыл еще про контроль версий. Эклипс имеет плагины для CVS и SVN.
13.06.2008 в 17:24
воу, там есть автозаполнение - это просто чудо! Спасибо!
23.07.2008 в 01:45
ZendStudio IDE (ZDE) - последняя версия 5.5.1. Далее идёт ZendStudio For Eclipse - последняя версия 6.0.1. Оба продукта непосредственно от самих создателей движка PHP Zend. Поверте - за долгие годы программирования на PHP, я перепробывал немеренное количество редакторов кода PHP. И именно в упомянутых редакторах имеется самая полная поддержка IntelliSense. На ходу цепляются все inqlude и require файлы с вашими функциями, классами, переменными и константами. Методы/переменные класса. Описания интерфейсов. Учёт наследования классов и многое, многе другое. И работает это - поверте - ничуть не хуже IntelliSense к примеру для #C в MS Visual Studio. Быстрай переход к месту декларации функции/метода/переменной/класса. Поддержка ZendFramework на уровне модели MVC. Кроме того ввиду нестрогой типизации данных в PHP, возможен вывод подсказок при передаче параметров в функции - их тип и значение по умолчанию, при помощи коментариев в стиле PHPDoc. Ещё стоит отметить полную, не глючную поддержку отладки (Zend debugger). Можно запускать и отлаживать скрипты на удалённых WEB-серверах. А в ZendStudio For Eclipse кроме родного Zend debugger, есть поддержка xDebugger и любых других отладчиков в виде плагинов. Как видно из названия - ZendStudio For Eclipse - по сути ни что иное как Eclipse PDE, только сделанное самими Zend’овцами собственными руками. Что привело к массе дополнительных и в полне полезных функций и инструментов отсутствующих в изначальном Eclipse PDE и работающий на ура. Кроме того сама идеология Eclipse позволяет добавить любые плагины и расширить функционал. Я к примеру прикрутил Aptana и выдернул из Adobe Flex Builder 3 (который тоже на базе Eclipse) его инструменты и “скрестил” всё в один инструмент - всё в одном. Теперь не запуская других прог, делаю тут же проэкты под Flex, Ajax, PHP, ZendFramework и AMFphp. ИМХО лучшего решения пока ненашёл.
23.07.2008 в 01:52
Забыл добавить. Для Eclipse PDE имеется плагин - подстветка синтаксиса Smarty. В результате прикрутив и его к Send Studio For Eclipse - получаю ПОЛНЫЙ набор инструментов разработки в одной программе
08.09.2008 в 08:33
Уважаемый автор… Пробовал я ставить озвученный редактор Komodo. При запуске жрёт памяти на 20 Мб больше Zend’а 5.5, а при работе ещё сеъдает столько же, сколько при запуске. Следовательно, начинает тормозить. В Зенде оказалось куда приятнее. Хотя если бы не память и кодировка windows-1251, используемая по умолчанию (изменения в настройках не помогли), то я бы использовал Komodo.
10.12.2008 в 15:59
Кстати, у zend есть приятная фича - работа с бд, очень полезная штука, которой увы нет в комодо, хотя вероятно есть плагин, или может быть создан.
Скоро будем пробовать zend for eclipse, думаю этот инструмент будет совершеннее.
12.12.2008 в 17:53
Zend Studio for Eclipse - реально крут.
14.12.2008 в 18:28
Скачал для тестов NetBeans6.5
Необходимый, на первый взгляд, функционал присутсвует:
svn, database manager, javascript, css (для него вообще есть нечто типа визуального редактора свойств).
Из важных плюсов можно отметить бесплатность. Минимальный комплект для пхп (23мб):
http://www.netbeans.org/features/php/index.html
Требует Java sdk 5 или выше. Можно скачать полную комплектацию, более 200 мб.
18.12.2008 в 16:43
Бирц
Тоже буду пробовать скоро.
Меня vab уже “совратил” на скачиваине zend for eclipse
А NetBeans использую для Ruby on Rails, в этом плане он отличен, для пхп как-то не охота его пока пробовать нормально, почему-то.
Nikita
У меня как не странно komodo один из самых шустрых среди других подобных программ (и впечатления о нем как об шустрой программе). Тот же NetBeans со своей ява-машиной, отъедает у меня куда больше памяти.
Synthetic, спасибо за такой подробный комментарий! Я отчасти из-за него начал задумываться о эклипсе
17.02.2009 в 02:04
2ezoterik - попробуйте PHP Expert Editor
как монстры типа Eclipse, все нужные фичи есть. Для русскоязычных бесплатен.
http://www.ankord.com/ru/phpxedit.php
Не такой меганавороченый (тормозной
24.04.2009 в 20:53
SciTE и больше ничего не нужно. Сборка от RuTeam полностью покрывает 90% запросов программиста PHP. Всё остальное можно быстро дописать самому за счёт использования Lua внутри редактора (кстати, Notepad++ на том же движке, кажется). Кроме PHP так ещё штук 20-30 бандлов.
Intellisence в стандартной поставке не плещет через край, но минимальный набор удовлетворяет. Повторюсь, остальное дописывается через Lua.
10.07.2009 в 12:46
NuSphere PhpEd - самая мощная PHP IDE, которую я знаю.
15.07.2009 в 15:28
http://www.aptana.com/air/ юзаем это для Zend Studio i5
18.08.2009 в 06:10
Все эти громадные редакторы. Я бы даже сказал среды разработки конечно хороши, но невероятно тяжелы, как в плане веса, так и в плане поедания ресурсов. Использую уже довольно давно Notepad++ с несколькими плагинами и вполне себе доволен.
NetBeans написан на Java и как мне показалось довольно медлен и неповоротлив.
02.09.2009 в 09:03
PHPEdit очень неплох. Если буду легализовать используемое ПО, то перейду на него с Zend’a.
Минус для меня (но не критичный) - кодфолдинг по нажатию на ctrl-пробел. В Zend’e по ходу набора классов/методов - удобнее.
02.09.2009 в 09:04
Не кодфолдинг, а дополнение кода. Перепутал малость.
25.11.2009 в 01:26
Пипец, вас тут послушаешь и вывех мозга получишь.
Так какой editor лучше для новичка и при этом что бы контролировать весь процесс вплоть до пробела?
03.12.2009 в 11:38
Подскажите такой вопрос: пытаюсь настроить в Komodo Edit подсветку - что-то не пойму, как сделать отдельное выделение фукций. Например чтобы функция intval отделялась от ее опечатки intvl.
07.12.2009 в 14:02
Я пользуюсь php edit. самый удобный