NetBeans как IDE для PHP
Для тех у кого совсем нет времени читать

Для тех, кто не хочет читать большую статью — сразу даю основную мысль. Если вам нужна хорошая IDE для PHP — обязательно попробуйте NetBeans.
Эта среда — бесплатная, быстрая, кросс-платформенная, хорошо понимает язык PHP. В ней приятно писать PHP-код, потому что присутствует все необходимые для этого инструменты — подсветка, completion из всех подключенных файлов, браузер классов PHP, всплывающая документация по стандартным функциям и так далее. Вместе с тем, это не просто текстовый редактор. NetBeans умеет скачивать и закачивать файлы на удаленные сервера по FTP и SFTP, имеет развитый SQL-терминал и полностью автоматизирует работу с SVN или CVS.
Ниже рассказывается, как и за что я выбрал NetBeans для себя и своей команды. Также рассматриваются еще несколько достойных редакторов и IDE для PHP, которые могут оказаться полезными при определенных условиях: Vim, JEdit, Eclipse PDT, Komodo IDE.
Выбор IDE для PHP
Раньше был стандартный ответ на вопрос, в каком IDE делать PHP-проект — ZendStudio. Она, конечно, была платной, но вы сами понимаете, это ни для кого не было проблемой:)
К сожалению, фирма Zend устала тянуть на себе воз разработки оригинального IDE. Текущая версия ZendStudio — это всего лишь Eclipse с логотипом Zend и надстройкой PDT (PHP Development Tools). С одной стороны, приятно, что скачать Eclipse и поставить этот набор плагинов можно абсолютно бесплатно. С другой стороны, Eclipse оказался прожорливым бегемотом по сравнению со старой ZendStudio. Он требует больше памяти, больше процессора и отрисовывает свои гламурные окошки гораздо медленнее.
Тут многие скажут — «Да ничего подобного, на любом современном компе это совершенно не критично, и у меня Eclipse работает прекрасно». Но для нашей компании это очень критично. Дело в том, что в нашей фирме разработчики сидят на тонких клиентах (Sun Ray). Фактически, все они работают на одном компьютере. На нем также сидят менеджеры проектов, финансовый директор, админ. Одновременно запущены полтора десятка Firefox-ов, пяток OpenOffice-ов. В такой среде запуск всего двух Eclipse приводит к заметному замедлению работы у всех пользователей. А нам нужно запустить около десяти экземпляров.
Конечно, рецепт решения известен — купить более мощный сервер. Но как-то обидно тратить деньги, ведь ZendStudio прекрасно работал в такой среде, а у PDT не появилось по сравнению с ZendStudio никаких новых «волшебных» функций.
Еще один недостаток Eclipse PDT, который заставил поставить на нем крест окончательно — это неумение ходить по SSH, используя ключи. В нашей компании доступ на виртуальные машины, куда выкладываются проекты, осуществляется исключительно по ключам. Это полностью решает такие распространенные проблемы, как проблема уволенного программиста, которому забыли сменить пароль, проблема пароля, записанного на бумажечку, приклеенную на монитор, проблема забытого пароля и тому подобных. Естественно, генерация ключа и выкладка его на виртуальную машину у нас автоматизирована, и это значительно экономит время админа. Вобщем, отказываться от доступа по публичному ключу только потому, что Eclipse этого не умеет, мы не собирались.
Как временное решение, мы перешли на Vim. С добавлением нескольких плагинов и подстройкой определенных параметров, писать на PHP в Vim достаточно удобно. (Прекрасная статья о превращении Vim в мощный PHP редактор).
Естественно, о проблеме системных ресурсов можно было забыть навсегда. Консольный редактор с точки зрения потребления памяти и процессора — это просто праздник какой-то. Но вскрылось достаточно много недостатков в других областях.
Во-первых, Vim все-таки не IDE, а текстовый редактор. Он ничего не знает о том, что текст, который вы пишите — это программа на PHP, он ничего не знает о том, что вы храните исходные тексты в SVN. Соответственно, completion не такой разумный, как у настоящего IDE, ctags не всегда понимают, где описана функция или метод. Приходится постоянно помнить, что после редактирования нужно еще залить файлы в SVN с помощью консольных команд. Ощущается отсутствие визуального diff-интерфейса. Каждая проблема сама по себе — мелочь для настоящего сурового программиста, но все вместе они заметно снижают производительность.
Во-вторых, Vim — очень специфичный редактор. Его нужно изучать. Только тот, кто уже пользовался Vi может понять всю глубину этой фразы:) Да, за пару недель девелопер-новичок узнает все команды, которые нужны в повседневной работе. Но ведь эти пару недель можно было бы потратить на обучение более нужным вещам, или просто на зарабатывание денег.
Побочная проблема, произрастающая из специфичности Vim — постоянные ошибки при переключении в другие программы. Девелоперу периодически нужно писать отчеты, пользоваться электронной почтой, то есть редактировать тексты в других текстовых редакторах. В результате перед каждым действием пальцы замирают на долю секунды, а мозг лихорадочно пытается понять, что же нужно сейчас нажать — <ctrl> +s или <esc>:w<enter>. Это раздражает и снижает производительность.
Лирическое отступление — почему Vim, а не Emacs? Несколько причин. Личная причина — я не люблю чувствовать себя осьминогом, пытаясь нажать четыре клавиши одновременно. Сложность в обучении — команды vim не забываются, если человек не пользовался им полгода, а шорткаты Emacs вылетают из головы за один день отсутствия практики. Повторное использование знаний — разработчик все равно обязан знать хотя бы основы Vi. Ведь если он заходит на незнакомый сервер заказчика по SSH, то с вероятностью 99% Vim или хотя бы Vi там будет. И с той же вероятностью там не будет Emacs:)
Из-за всех перечисленных выше проблем, пока разработчики брутально жали эскейп-двоеточия в консоли, я предпринял очередной круг поиска более современного IDE для PHP.
Первое что я попробовал — это IntelliJ Idea. В новостях я прочитал, что в версии 8 добавлена поддержка PHP. Как говорил Том из Tom& Jerry: «Не верьте этой ерунде! »
Не поймите меня неправильно, если речь идет о разработке на Java, то Идея — абсолютное совершенство, и другие IDE никогда не смогут ее превзойти. «Реактивные мозги» сделали из Java Lisp, и благодаря этому Идея понимает ваш код не хуже, чем вы сами. Да чего уж тут, она понимает ваш код гораздо лучше вас, просто в этом стыдно признаться:)
Но заявленная «поддержка PHP» — это всего лишь написанный неизвестно кем 3rd-party плагин. Это полное убожество, практически не рабочее, смотрящееся особенно уныло на фоне чудес Идеи для Java. Мои тайные надежды навсегда погрузиться в волшебный мир IntelliJ Idea совершенно не оправдались. Для PHP нужно было искать что-то другое.
Следующим в списке был JEdit. Неплохой open-source текстовый редактор, написанный на чистой Java, с большим выбором плагинов. С помощью плагинов его можно превратить во что угодно, в том числе и в IDE.
JEdit порадовал меня скромными требованиями к ресурсам, умением ходить по FTP и SFTP, в том числе, используя приватные ключи. На мгновение, увидев в панели слева список файлов на удаленном сервере, я почувствовал себя совсем как в ZendStudio. Но — увы. Плагин для PHP оказался сырым, недописанным. Completion хромал на обе ноги, парсить подключенные библиотеки никто и не собирался, ctags, якобы поддерживаемые, так и не заработали.
Да и вообще проект выглядел умирающим. Последняя стабильная версия вышла в 2004 году, а Слава Пестов, автор и вдохновитель проекта, забросил JEdit и занялся разработкой языка Factor (какая-то «аццкая» смесь Forth и Lisp).
Еще одним open-source проектом, который пару лет назад был сырым, но многообещающим, и который я хотел проверить, был OpenKomodo. Оказалось, что до этого проекта добрались цепкие когти мирового капитала. OpenKomodo взяла под крылышко некая компания ActiveState. Текстовый редактор KomodoEdit, который служит основой для IDE, все еще открыт и доступен для скачивания. Но полная IDE уже закрыта и продается за деньги.
Для очистки совести я скачал trial Komodo IDE. В принципе, среда оставляет хорошее впечатление. Подсветка и completion на месте, умеет работать с удаленными файлами по FTP и SCP, но, к сожалению, о публичных ключах понятия не имеет. Имеет поддержку CVS, SVN и еще нескольких систем контроля версий, причем пользуется установленными в системе клиентами. Благодаря этому, например, можно пользоваться SVN поверх SSH даже с приватными ключами, хотя сам Komodo ничего об этом не знает.
Единственный недостаток, который сильно раздражал — интерфейс очень медленный. Особенность этой среды в том, что она написана на XUL, это язык описания интерфейса и набор виджетов, на котором написан интерфейс Mozilla и Firefox. На тонких клиентах XUL работает отвратительно медленно. И если с Firefox ничего не поделаешь и приходится терпеть, то задумчивое IDE, да еще и за деньги, совершенно не входило в мои планы.
NetBeans
Осталась последняя надежда, NetBeans. С этой IDE у меня длительные сложные отношения. Когда в тысяча девятьсот забытом году я скачал JDK 1.1 на скорости 33600, я был поражен, что в составе JDK нет никакого, даже самого простенького редактора исходных текстов. После Borland C и Delphi, которыми я тогда активно пользовался, редактирование текста в блокноте и запуск компилятора вручную из командной строки слегка шокировал. Правда, это продолжалось недолго. Borland оперативно выпустил JBuilder, и я «подсел» на знакомый по Delphi интерфейс.
Некоторое время спустя SUN начала рекомендовать NetBeans в качестве стандартного IDE для Java. На тот момент у NetBeans был очень спорный визуальный редактор UI, который сильно уступал мощи JBuilder.
Затем редактор интерфейса в NetBeans заметно улучшился, но меня это уже не очень интересовало, так как мне нужно было рисовать архитектуру приложения в UML. Поэтому я использовал Together (бедняга погиб, придавленный разлагающейся тушей Borland), а NetBeans, как альтернативу, я даже не рассматривал, у него UML не было даже в планах.
Затем мне понадобилось IDE с поддержкой J2EE. NetBeans снова меня разочаровал, так как на тот момент в этой среде она была рудиментарной.
В результате у меня сложился четкий паттерн в отношении NetBeans — это среда, в которой вечно чего-то не хватает, которая на шаг отстает от современных технологий. Так что узнав, что у NetBeans есть некая поддержка PHP, я не питал никаких надежд, и решил проверить ее только «для очистки совести».
Но с самого начала NetBeans стал преподносить приятные сюрпризы. Инсталляция весила 40Mb (против 120Mb у Eclipse), поставилась без проблем и запускалась быстрее, чем Eclipse. Для разработки на PHP нужно было поставить всего один плагин, скачался и поставился он гораздо быстрее, чем PDT для Eclipse и без всяких зависимостей. Поддержка SFTP была в базовой системе, а не в 3rd-party плагинах, как у Eclipse. Интерфейс работал гораздо быстрее, а памяти нужно было раза в три меньше, что, как вы помните, очень важно для нашей многопользовательской среды.
С точки зрения редактирования PHP кода — у NetBeans есть все, что ожидается от взрослой IDE. Это и completion, как стандартных функций и ключевых слов, так и всех функций и классов из всех подключенных библиотек. И показ инлайн-документации для стандартных функций. И разумная подсветка синтаксиса, в том числе для файлов, у которых расширение не «*.php». И даже подсказки возможных логических ошибок. Без нареканий работает браузер классов и быстрый переход от вызова функции к ее определению и обратно.
Единственное, что находится в зачаточном состоянии — это рефакторинг. Работает только одна операция — переименование локальной переменной. Но с другой стороны, в Vim и этого нет.
В качестве собственно IDE, объединяющей редактор кода с различными внешними инструментами, NetBeans тоже очень радует.
Для работы с базами данных есть браузер структуры баз и связанный с ним SQL-терминал для запросов. Он достаточно богат функциями, и за месяц работы мне ни разу не захотелось запустить консольный клиент mysql.
Полная поддержка SVN встроена в базовую систему, так что о консольных командах SVN я тоже забыл. В этом очень помог визуальный diff-интерфейс, такой же мощный, как и у Eclipse.
Правда возникло небольшое неудобство с тем, что в SVN я хожу по протоколу svn+ssh, с использованием ключей. В интерфейсе NetBeans есть все необходимые поля, чтобы настроить такой доступ, и первый checkout проходит без проблем. Но потом NetBeans полностью забывает об этих настройках, и начинает выдавать ошибки соединения.
К счастью, у NetBeans очень здоровый подход — для работы с SVN он использует консольные команды, которые уже установлены в системе. И небольшое колдовство в каталоге ~/.subversion полностью решает эту проблему.
Работа с файлами на уделенных серверах организована лучше, чем у всех рассмотренных выше IDE. Проект вы можете выкладывать на локальный веб-сервер, на удаленный сервер, по FTP или SFTP, или же вы можете запускать PHP-скрипт с помощью консольного интерпретатора. Последняя возможность очень полезна для прототипирования и тестирования.
Использования ключей SSH поддерживается «из коробки», причем по умолчанию NetBeans разумно предполагает, что ключ лежит в каталоге ~/.ssh. Выкладывать файл на удаленный сервер вы можете вручную, выбрав определенный файл или каталог, или настроив автоматическую заливку в момент сохранения файла.
Все это относится к NetBeans 6.7. Пусть вас не смущает то, что еще нет официального релиза этой версии. Я успел посидеть под Beta1, Beta2 и Release Candidate. За это время ни разу я не натолкнулся на баги или нестабильную работу. Можете смело использовать Release Candidate.
Похоже, что после долгих поисков я все-таки нашел взрослую, бесплатную, open source среду разработки для PHP. Надеюсь, что эта статья сэкономит время кому-то, кто находится в аналогичном поиске.
Автор:
Иван Петриченко,
Oredale.com,
тренер программистов,
[email protected]
77 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.