Сайт вебмастера

IDE для PHP на примере Notepad++

20-08-2012Время чтения ~ 9 мин.Софт 28234

Вообще, что такое IDE? Переводится как «Интегрированная среда разработки». То есть предполагается, что это некая программа, которой будет достаточно, чтобы создать новое приложение или отредактировать существующее.

В «бытовом» понимании классический вариант IDE - это Delphi. Мне ближе pascal, поэтому буду проводить аналогию с ним, хотя принципиальных отличий, скажем от Visual Studio, нет.

Помимо текстового редактора кода, Delphi выполняет ещё ряд незаметных для разработчика действий. Например дизайн формы выполняется визуально, компиляция с нужными параметрами, настройка ресурсов, линковка файлов и т.п. То есть приложение в Delphi - это некий набор файлов, о которых знает среда разработки и которые между собой каким-то образом согласованы. Разработчику в принципе нет необходимости вдаваться в такие нюансы. Нужно открыть какой-то unit - просто выбираем его из списка, а Delphi автоматом подгрузит и код, и форму, и пересчитает все нужные связи, свойства и т.п.

Что же тогда следует подразумевать под IDE для PHP-разработчика?

Википедия предлагает несколько вариантов IDE for PHP. Поскольку я давно занимаюсь программированием, то перепробовал массу различных вариантов, но так и не нашёл программы, которая могла бы отвечать классическому пониманию IDE.

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

В итоге самые «продвинутые» IDE для PHP в лучшем случае смогут лишь проанализировать код и сделать список переменных, функций и тэгов. С учётом того, что разработчик и так неплохо должен ориентироваться в php-коде, вот эта вся мешанина просто не нужна.

Ситуация становится совершенно плачевной, если мы отойдём от «теоретического» программирования к практике. Разработчики IDE могут предложить некий вариант построения php-приложений. Самый яркий пример - RadPHP (Delphi for PHP).

Вообще, ребята, конечно молодцы: придумать такую вещь под силу не каждому. Но в реальности ни один php-кодер не возьмёт эту IDE в работу. И прежде всего из-за того, что RadPHP предлагает своё видение структуры php-приложения, которое мало согласуется с существующими CMS и фреймворками. Да и согласовать существующие разработки с RadPHP будет крайне сложно.

Вместе с тем, хоть в RadPHP и провальная неудачная реализация (зацикленность на Delphi), стоит отметить, что изначальная идея была абсолютно верной и витает в воздухе уже не один год.

Что такое типовое PHP-приложение? Это набор каких-то php-файлов, часть из них т.н. ядро и значит их не редактируют, а часть - редактируемая, например файлы шаблона.

Но, в отличие от «теоретического» программирования, на практике разработчик работает не только с php-файлами, но и css, js и другими. Тот же html-код «вшивается» в php-файл для верстки.

Таким образом, идея RadPHP с компонентами (VCL) отлично подходит и для PHP. Единственная сложность - это то, что php-компонент технически не должен быть php-файлом, а быть, например xml-файлом.

В некоторых CMS (и фреймворках) используется нечто похожее, где каждый модуль сопровождается описательным файлом, вроде info.php в шаблонах и плагинах MaxSite CMS.

Простой пример на компонентах header (footer) в MaxSite CMS. Сам компонент - это php-файл. В нем заключена html-структура и функционал. Стили хранятся в подкаталоге css. Скрипты - в js. Если есть опции, то это ini-файл в options. Если бы у нас была готовая IDE, которая понимала бы файловую структуру компонента, то она предложила бы обычный редактор для PHP, для CSS - аля CSS Tidy, а для опций редактор в виде таблицы с выпадающими полями.

Поскольку такой IDE нет, то приходится все файлы править вручную, и при том держать в голове их располложение.

Таким образом на сегодняшний день «классической» IDE for PHP не существует. Вместо этого существующие программы предлагают только частичный функционал.

В основном, конечно, все упирают на подсветку синтаксиса и т.н. синтаксический сахар.

С подсветкой всё понятно. С этим проблем нет, даже можно свою создать. Что касается «синтаксического сахара», то тут уже будут нюансы.

«Синтаксический сахар» позволяет автоматизировать рутинные операции. Например Zen coding - это когда вместо набора css-правил, вебмастер набирает строчку каких-то «загадочных» символов, а по завершении ввода, строчка преобразуется в готовый css-код. В этот же ряд я бы поставил такие вещи как - автозавершение, подсказки при вводе, code folding, метки по тексту, карта документа и какие-то вспомогательне вещи, вроде преобразования текста в html-спецсимволы.

Отдельно отмечу возможность отладки и предпросмотра. Отладка вещь хорошая, но на уровне PHP выполняется вне IDE - на уровне браузера. Конечно, если мы отлаживаем скрипт, не выводящий данные в браузер, то наверное такой дебагер будет полезен. С другой стороны, для отладки PHP-кода куда проще воспользоваться отладочными php-функциями, вроде print_r().

Тоже самое касается предпросмотра. Есть редакторы, которые предлагают предпросмотр, но в таком оконце мало что видно. Поэтому куда эффективней расположить браузер на соседнем мониторе.

Помощь по функциям для IDE была бы нелишней. Мне нравится реализация этой возможности в Delphi. По мере набора имени функции, Delphi выводит всплывающую подсказку, где видны подходящие варианты и их аргументы. Это учень удобно.

При этом, если мне нужна помощь по функции, то я ставлю на неё курсор и нажимаю F1. Запускается хелп с найденными вариантами. В идеале хотелось бы похожее поведение и для PHP.

Последний, но самый важный момент, который требуется от IDE - это уметь связывать файлы в единый проект.

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

Например, при разработке шаблона MaxSite CMS, я в основном работаю с каталогом компонентов, каталогом css-стилей и custom-файлами. В редких случаях я вношу изменения в stock-файлы. Но при этом я никогда не редактирую main.php, поэтому, хоть он физически и присутствует, для работы мне не нужен.

Для организации таких проектов есть только два варианта. Первый - это ручное создание проекта (в рамках IDE) и добавление в него файлов и каталогов. Поскольку, как мы выяснили, php-приложение состоит из разных файлов, то в таком варианте, при создании новых компонентов приложения, придётся вручную создавать и добавлять файлы в проект.

К тому же здесь плохо решается вопрос добавления файлов, которые были физически скопированны вне IDE. Например в новом шаблоне нужно использовать шапку, которая была в другом шаблоне. Я просто копирую файлы через файловый менеджер, но чтобы в IDE файлы отобразились, потребуется их вручную добавить. Это несколько неудобно.

Второй способ - это встроенный explorer файлов. Тут работа аналогична проводнику windows. Выбрал каталог, открыл файл. Изменения файловой структуры тут же отображаются.

В этом подходе существует другая проблема - обилие ненужных файлов. Мне не нужен main.php, но он всё равно отображается. Ну и навигация по дереву каталогов и файлам не очень удобна, опять же из-за обилия «ненужных».

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

С нюансами, похожие варианты встречаются в разных программах. Мой выбор - Notepad++ и на его примере я покажу как и что устанавливать.

Подсветка синтаксиса

Тут никаких проблем. Несколько десятков самых разных вариантов, кроме того, можно отредактировать или создать свой стиль. Так что, если кто-то ориентируется на «а вот в программе XXX лучше выглядит», могут смело отправит этот аргумент в утиль.

Удобство редактирования

Есть и автозавершение, и подсказки, и мультиредактирование, а также куча прочих функция по работе с текстом.

Карта документа

Если файл достаточно большой, то удобно включить карту документа. В этом случае добраться до нужного места будет чуть проще.

Работа с плагинами

Плагинов много. Самый удобный способ работы с плагинами воспользоваться плагином Plugin Manager. Он находится в меню «Плагины». Отмечаем нужные: устанвливаются, удаляются, обновляются автоматом. Проще и придумать сложно.

Список функций

Плагин Function List строит список всех объявленных функций в php-файле. Я часто пользуюсь этой возможностью, особенно, когда работаю с файлами ядра MaxSite CMS. Кроме этого с помощью Function List можно просмотреть все функции в учебных целях.

Клавиатурные сокращения

Практически всё настраивается. Я рекомендую сразу подправить клавиатурные сокращения под свой стиль, поскольку некоторые комбинации несколько нетипичны.

Буфер обмена

Расширяется через плагин MultiClipboard. Запоминает скопированые тексты. Часто выручает.

Заготовки (snippets)

Для снипетов есть два одноименных плагина. Я работал с ними, но отказался, поскольку использую сторонние программы: см. Шаблоны текста-2. Причем к текущему моменту я вообще пользуюсь только Punto Switcher, поскольку это тот же zen coding, только так, как этого хочу я: см. Шаблоны текста с помощью Punto Switcher.

Фишки с текстом

Для каких-то преобразований можно включить плагин TextFX Charhters.

Проекты

Для проектов по первому варианту (фиксированая структура) предусмотрены т.н. WorkSpace (Вид - Проект - 1,2,3). В «рабочей области» можно «Добавить новый проект» - это будет корневой узел. Таких проектов в одной «рабочей области» может быть сколько угодно. В проект можно добавить как отдельные файлы, так и файлы целого каталога.

При работе с самой MaxSite CMS я в основном именно таким вариантом и пользуюсь, поскольку файлы редко добавляются, и не стоит задача постоянного добавления файлов.

Рабочую область можно сохранить в отдельный текстовый файл. То есть можно сделать заготовку проекта, загрузить его и после наполнить файлами.

Избранные каталоги

Когда же я делаю новые шаблоны, где файлы постоянно тусуются, то для группировки использую плагин Light Explorer. У него есть возможность добавлять каталоги в Избранное. Внутри каталога же, файлы ведут себя как в explorer'е.

Избранное автоматом сохраняется.

Также есть интересная функция «Synhronize tree width current document», позволяющую автоматически найти в дереве эксплорера текущий файл. Видимо автор плагина, также замучился прыгать по его «веткам». :-)

Окно

Notepad++ можно расположить поверх всех окон. Это особенно удобно на одномониторных системах, когда постоянно прыгаешь с одного окна на другое.

Кроме того можно включить режим «Только текст (во весь экран)». В этом случае отключается меню, заголовки, строка статуса программы и остается только код. В целях экнономии места на экране, весьма полезная штукенция.

Разделение окон

Тоже весьма полезная вещь. Например нужно иметь перед глазамии образец другого файла, скажем стили. Стандартно придется преключаться табами туда-сюда, копируя код. Для единичных опереций это не проблема, для постоянных - муторно и долго. Если на вкладке выбрать «Переместить в другое окно», то произойдет Multi-View - окна расположатся одно над другим или рядом. Для «вращения» нужно второй кнопкой мыши на разделителе выбрать «Rotate to left» (или right). Вот объясняющие скриншоты.

Автозавершение

Вот их я не использую. Включаются в настройках, но меня это больше раздражает, чем бывает полезным. Если можно было бы прикрутить какой-то словарь функций, как в Delphi, то наверное пользовался, а так - на любителя.

PHP-хелп

Тут не так однозначно. Как таковой хелп по функциям сделан через php.net. То есть, если верно ввести имя функции, то по ней можно посмотреть в браузере подсказку. Для меня это не совсем удобно, поэтому для хелпа я использую отдельные chm-справочники по PHP, HTML и CSS. Это немного быстрей, да и нет привязки к Интернету.

Наверное можно было бы как-то их прикрутить, но я пока не разобрался в этом вопросе.


Если сравнивать с другими программами, то Notepad++ ничем не уступает другим IDE. Во всяком случае я не нашел в них чего-то принципиально лучшего. Кроме того, Notepad++ очень быстро работает, загружается, великолепно работает с кодировками, чего не скажешь о других. В принципе особо агитировать и нет смысла, обычно каждый сам выбирает свой инструмент и постепенно оттачивает навыки пользования.

Похожие записи
Комментарии (8) RSS
1 Владислав 2012-08-24 11:41:46

Хоть я и пишу достаточно сложные проекты на PHP, но меня вполне устраивает Notepad++, скорость и простота наверное это залог успеха ну и множества плагинов. Также использую Ворбенч+NetBeans получается инструмент который позволяет разрабатывать на PHP неплохие проекты.


2 Захар 2012-08-24 11:59:17

Notepad++ очень умело работает с кодировками и это его главный плюс, как редактор просто супер, я пишу в основном на UTF-8, думаю самая ходовая сейчас кодировка.


3 Илья 2012-08-24 12:59:40

Подсветка кода и плюшки, крутая программа. Если перечислять все достоинства программы, то я до утра буду болтать, мне кажется это действенный довод в пользу Notepad++


4 Глеб 2012-08-24 16:00:00

Привет. Мне нравится что можно файлы открывать во вкладках, все быстро и просто. UTF-8 без BOM и прочие плюшки, но главное все таки это простота Notepad++.


5 Матвей 2012-08-24 19:05:19

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


6 elle 2012-08-25 22:26:51

Занятные комментарии:lol:

И размер как по линейке...


7 Admin 2012-08-26 08:41:07 admin

Так это купленные. Реальным посетителям, видать темы блога не интересны. ;-)


8 vovans 2012-09-05 20:59:46
я пишу в основном на UTF-8, думаю самая ходовая сейчас кодировка.

это не самая ходовая, а едмнсвенно правильная кодировка.