Pull to refresh

Немного о прелестях NetBeans + php

PHP *
Я, как человек, связанный университетом с Java, следил за развитием NetBeans практически с момента его становления изначально меня принудил ей пользоваться мне показал эту IDE мой учитель — Вадим Монахов (с гордостью обнаружил, что ссылка на него ведет с wikipedia, раздел литература). Сейчас часто сталкиваюсь с тем, что программисты PHP пишут говнокод ссылаясь на недоразвитость IDE не умеют делать Refactoring и многих из них останавливает отсутствие автоматизированных средств. Собственно, я решил отобрать у них этот аргумент: средства есть и сегодня я рассмотрю NetBeans как среду разработки для PHP и продемонстрирую заложенную в нее мощь.

С вашего позволения пару ссылочек:
официальная страничка для скачки: http://netbeans.org/downloads/index.html
девелоперская версия: http://bertram.netbeans.org/hudson/job/PHP-build/lastStableBuild/
многое из того что я скажу стало доступно в последнем релизе.

Как обычно остаются кривые имена методов, в коде? человек пишет, потом использует, потом меняет, потом уточняет контекст использования и вот он уже готов бы и переименовать, но есть проблема — слишком много изменений в коде. Можно конечно сделать автозамену по файлам, но нужно проверять контекст и гарантировать что нет ошибок. Что нам может предложить NetBeans?
собственно рассмотрим на примере (взято тут):
image
мы просто ставим курсор в нужное место и жмем CTRL+R (нужно сказать, что это и есть прием переименования, который должен быть доступен во вкладке Refactoring -> Rename), после чего безопасно переименуем все места вызова данного метода во всем проекте, упоминания в документации (если она корректно оформлена через JavaDoc style).
примечание: Если его выбрать в стабильной версии 6.9.1 стандартным способом через меню или через контекстное меню правой кнопки мыши, то вы увидите сообщение «The Rename refactoring cannot be applied in this context» — это баг и он исправлен в девелоперской версии.

Аналогично можно переименовать и название класса во всем проекте:
image
примечание: очевидно вызовы из разряда $o = new $className(); не могут быть обработаны, но о том что таковые нужно минимизировать, думаю лишний раз говорить не стоит. Как минимум их всегда можно подписать комментарием see RealClassName

после чего вам предстанет инструмент контроля переименования:
image
где нужно отметить галочками цели + вы сможете посмотреть изменения прямо в коде:
image

Так же в IDE встроены мощные средства поиска, при помощи которых вы можете найти все использования данного кода (Alt+ F7 или в контекстном меню по правому клику мышки):


Вы можете так же легко найти и все наследования/переопределения сущности во всем проекте:


Обращаю ваше внимание, что эти функции экспериментальные и будут введены в основной проект через некоторое время (обычно месяц-полтора).

хочу еще немного описать преимуществ данной IDE — уж больно она мне нравится.
IDE позволяет работать как с системами контроля версий (svn, cvs, mercurial, git), так может и сама вести локальную историю:

Если вы пишите как курица лапой и совершенно не можете заставить себя писать по codeStyle то IDE поможет вам — одно нажатие Alt+Shift+F (Source-> Format) и у вас отформатированный код. Кстати CodeStyle настраивается!

Система поддерживает синтаксис Smarty (ну и как дублирующий синтаксис Quicky).

для тех кто ленится писать Getterы и Setterы есть специальный инструмент (откажитесь от хаков):
ALT + Insert (Source-> Insert Code) внутри класса
image

В системе много еще достоинств, и она быстро развивается, признаться до версии 6.2 это было уг, но нынче одна из лучших IDE, вполне достойная замена ZEND и Eclipse, имеет множество преимуществ. Опасения что со сменой хозяина судьба IDE станет под вопросом развеиваются — разработчики активно работают и радуют меня скоростью внесения улучшений. Вообще хотел бы ребятам из SUN сказать большое спасибо за это наследие, все таки чертовски круто что у Java есть родная IDE бесплатная, за которой стоит такая мощная сила как создатели языка, ну и особенно приятен их интерес к PHP. Кстати, PHP 5.3 avalible -)

Эта заметка обращена скорее к тем кто интересуется возможностями, ищет себе IDE и вообще хочет сделать свою жизнь лучше. Нет цели сделать объемный обзор — это долго и сложно, и я пока не могу себе позволить, но надеюсь эта заметка прольет свет на сей ценный инструмент, особенно в контексте такого популярного языка как PHP и позволит программистам писать еще более качественный код, тратя все меньше усилий. Спасибо за внимание.

UPD:
ukko Добавьте ещё пожалуйста быстрый поиск и переход к нужному классу по Ctrl+O
Imenem Я бы еще добавил в статью поиск в проектах (ctrl+shift+F) c возможностью поиска как по всем проектам, так и по отдельной выбранной папке, с поддержкой регулярок, что позволяет найти все
bald2b
Отключение авто индексации (для огромных проектов) «Tools — Options — Misc — Files — Enable autoscanning of sources»?


ZEN-Coding: http://github.com/lorenzos/ZenCodingNetBeansPlugin#readme
Tags:
Hubs:
Total votes 118: ↑103 and ↓15 +88
Views 38K
Comments Comments 151