Выход PDT 2.0 для Eclipse состоялся 31 декабря прошлого года, как новогодний подарок веб-программистам. Однако существует большие неудобства в работе с PDT 2.0, и они остались неразрешенными до сих пор.
Самое основное неудобство для меня – это работа PDT с удаленными файлами. Редактировать файлы на удаленном сервере, например по протоколу SSH, – это довольно распространенная задача для разработки на PHP. Если программист занимается поддержкой работающей объемной системы, то без удаленного редактирования кода обойтись практически невозможно.
В состав готового релиза All-In-One PDT 2.0 не входят средства для удаленно редактирования файла. Однако, это легко исправить, установив в Eclipse плагин Remote Systems Explorer (RSE). Плагин позволяет работать с файлами по всем популярным протоколам.
Проблема в том, что редактор PDT 2.0 очень плохо работает вместе с RSE. При открытии файлов с помощью RSE возникают следующие трудности:
Перечисленные проблемы приводят к тому, что пользы от PDT 2.0 при работе с удаленными файлами не больше, чем от блокнота Windows. При редактировании же локальных файлов, включенных в PHP проект, редактор PDT ведет себя вполне корректно.
В попытках решить данную проблему мне пришлось потратить немало времени на гугле, однако решения так и не было. В документации RSE указано о наличии проблемы, и способ ее решения заключается в создании локального PHP проекта и подключения к проекту удаленного каталога по ссылке. Такое решение является приемлемым только, если удаленный каталог не содержит большой объем данных. В противном случае, работа будет затруднительна, т.к. Eclipse будет часто самостоятельно выполнять обновление удаленного каталога – то есть загружать на локальный компьютер все его содержимое.
Другой способ организовать работу с удаленными файлами заключается в монтировании удаленного каталога к системе. Удаленный каталог в таком случае становится в системе дополнительным диском. Для Windows мне удалось организовать такой способ работы при помощи утилиты Dokan SSHFS. Этот способ можно использовать только для небольших проектов, потому что скорость работы с удаленными файлами низкая, а при большом объеме кода работа вообще становится невыносимой.
Мне удалось найти другое решение, которое решило все мои проблемы.
Плагин RSE создает в Eclipse свой проект, который называется RemoteSystemsTempFiles. Данный проект располагается обычно по пути C:\Users\user_name\workspace\RemoteSystemsTempFiles. В этом каталоге содержатся все файлы, которые RSE получает при работе с удаленными серверами.
Оказалось, что если проект RemoteSystemsTempFiles преобразовать в PHP проект, то PDT начнет полностью корректно работать с удаленными файлами. Для преобразования в PHP проект я отредактировал файл RemoteSystemsTempFiles\.project, добавил строки, отмеченные зеленым цветом.
Также понадобилось добавить в каталог проекта RemoteSystemsTempFiles файл .buildpath.
Теперь, когда RSE использует PHP проект, работа PDT 2.0 полностью нормализовалась:
Работа проверялась на версиях PDT 2.0.0GA и 2.1.0M5 для Windows.
Самое основное неудобство для меня – это работа PDT с удаленными файлами. Редактировать файлы на удаленном сервере, например по протоколу SSH, – это довольно распространенная задача для разработки на PHP. Если программист занимается поддержкой работающей объемной системы, то без удаленного редактирования кода обойтись практически невозможно.
В состав готового релиза All-In-One PDT 2.0 не входят средства для удаленно редактирования файла. Однако, это легко исправить, установив в Eclipse плагин Remote Systems Explorer (RSE). Плагин позволяет работать с файлами по всем популярным протоколам.
Проблема в том, что редактор PDT 2.0 очень плохо работает вместе с RSE. При открытии файлов с помощью RSE возникают следующие трудности:
- Редактор PDT не выполняет проверку PHP синтаксиса, и поэтому не подсвечивает ошибки;
- Полностью или частично не работает автодополнение: PDT не предлагает ни названия стандартных и определенных функций, ни переменных, ни классов;
- Окно Outline остается пустым;
- В список задач (окно Tasks) не попадают записи, отмеченные в коде с помощью phpDoc и директив todo.
Перечисленные проблемы приводят к тому, что пользы от PDT 2.0 при работе с удаленными файлами не больше, чем от блокнота Windows. При редактировании же локальных файлов, включенных в PHP проект, редактор PDT ведет себя вполне корректно.
В попытках решить данную проблему мне пришлось потратить немало времени на гугле, однако решения так и не было. В документации RSE указано о наличии проблемы, и способ ее решения заключается в создании локального PHP проекта и подключения к проекту удаленного каталога по ссылке. Такое решение является приемлемым только, если удаленный каталог не содержит большой объем данных. В противном случае, работа будет затруднительна, т.к. Eclipse будет часто самостоятельно выполнять обновление удаленного каталога – то есть загружать на локальный компьютер все его содержимое.
Другой способ организовать работу с удаленными файлами заключается в монтировании удаленного каталога к системе. Удаленный каталог в таком случае становится в системе дополнительным диском. Для Windows мне удалось организовать такой способ работы при помощи утилиты Dokan SSHFS. Этот способ можно использовать только для небольших проектов, потому что скорость работы с удаленными файлами низкая, а при большом объеме кода работа вообще становится невыносимой.
Мне удалось найти другое решение, которое решило все мои проблемы.
Плагин RSE создает в Eclipse свой проект, который называется RemoteSystemsTempFiles. Данный проект располагается обычно по пути C:\Users\user_name\workspace\RemoteSystemsTempFiles. В этом каталоге содержатся все файлы, которые RSE получает при работе с удаленными серверами.
Оказалось, что если проект RemoteSystemsTempFiles преобразовать в PHP проект, то PDT начнет полностью корректно работать с удаленными файлами. Для преобразования в PHP проект я отредактировал файл RemoteSystemsTempFiles\.project, добавил строки, отмеченные зеленым цветом.
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>RemoteSystemsTempFiles</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.dltk.core.scriptbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
<nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>
</natures>
</projectDescription>
Также понадобилось добавить в каталог проекта RemoteSystemsTempFiles файл .buildpath.
<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
<buildpathentry kind="src" path=""/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
</buildpath>
Теперь, когда RSE использует PHP проект, работа PDT 2.0 полностью нормализовалась:
- Работает проверка синтаксиса;
- Работает автодополнение;
- Работает Outline;
- Работают todo.
Работа проверялась на версиях PDT 2.0.0GA и 2.1.0M5 для Windows.