Разработка с CodeIgniter: включаем автодополнение кода в Eclipse

Владимир | | CodeIgniter, Eclipse, PHP, Web разработка.

codeigniter pdt

Автодополнение кода, наверно, один из лучших способов защиты от механических ошибок. Если вы привыкли его использовать, то можете определить, что допустили ошибку ещё до того как увидите её. Отсутствие окошка с вариантами автодополнения – первый признак опечатки.

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

В этой статье я расскажу о нескольких способах подключения автодополнения кода для сторонних библиотек. В качестве примера рассмотрим фреймворк CodeIgniter.

Прежде всего, рассмотрим самый простой вариант.

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

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

Но, несмотря на свою простоту, этот способ имеет недостаток.

Если у вас несколько проектов, которые используют CodeIgniter, то вы можете использовать одну и ту же копию системных файлов.

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

Примечание. Этот метод подробно рассмотрен на официальном форуме CodeIgniter.

Идея следующая.

1) Создаем новый PHP проект и называем его CI_CORE (название, конечно, может быть любым).
Копируем в этот проект все содержимое папки system из дистрибутива CodeIgniter (кроме папки application).

2) Создаем новый проект для нашего приложения, использующего CodeIgniter (название роли не играет).

Во время создания связываем его с проектом CI_CORE.

Для этого на вкладке Projects, нажимаем кнопку Add…, выбираем CI_CORE и жмем OK.

link_projects

Копируем в этот проект файл index.php и папку application из дистрибутива CodeIgniter.

3) Настраиваем CodeIgniter.

Т.к. мы изменили стандартное размещение папок фреймворка, то нужно «рассказать» CodeIgniter где искать системные файлы.

Все изменения делаются только в проекте с приложением (в CI_CORE ничего не меняем).

В файле index.php находим строку с переменной $system_folder и указываем новое размещение системных файлов

$system_folder = "../CI_CORE";

Если вы изменили название папки application, то необходимо изменить и переменную $application_folder.

$application_folder = "application";

4) Проверяем, что у нас получилось.

Результат показан на скриншоте.

codeigniter autocomplete

Как видите, Eclipse ищет варианты для автодополнения в системных файлах CodeIgniter. И, как обычно, показывает перечень подходящих функций и классов с комментариями.

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

Кстати, ничто не мешает сделать проекты с системными файлами для разных версий фреймворка и назвать их, например CI_CORE_1_6, CI_CORE_1_7 и т.д.

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

Интересно почитать

Огромный выбор бытовой техники liebher одесса
Качественные энергетические установки позволяют снизить затраты энергии и сохранить окружающую среду.
Выбираем подарок для ребенка — лего полицейский участок.

  • Taral

    Спасибо за статью.
    У меня вопрос. Возможно вы сможете помочь.
    Я тоже использую Eclipse и CodeIgniter.
    У Eclipse есть встроенный браузер.
    И с CodeIgniter он работает не правильно.
    А именно. Открывается файл который я сейчас редактирую. И понятно что выходит ошибка.
    Можно как-то прописать в ручную адрес на который будет заходить Eclipse при изменении/редактировании файла? А может есть другое решение

    • Меню Run — Run Configuration…
      Выбираете PHP Web Page и создаете новую конфигурацию запуска (кнопка New launch configuration).
      В поле File вводите имя файла (index.php) (лучше выбрать с помощью кнопки Browse…, т.к. можно запутаться со слешами)
      И проверяете URL.
      После этого запускаете эту конфигурацию.

      Как вариант можно открыть сайт в браузере и вообще не нажимать на кнопку Run, а просто обновлять страницу.

  • Taral

    Спасибо за статью.
    У меня вопрос. Возможно вы сможете помочь.
    Я тоже использую Eclipse и CodeIgniter.
    У Eclipse есть встроенный браузер.
    И с CodeIgniter он работает не правильно.
    А именно. Открывается файл который я сейчас редактирую. И понятно что выходит ошибка.
    Можно как-то прописать в ручную адрес на который будет заходить Eclipse при изменении/редактировании файла? А может есть другое решение

    • Меню Run — Run Configuration…
      Выбираете PHP Web Page и создаете новую конфигурацию запуска (кнопка New launch configuration).
      В поле File вводите имя файла (index.php) (лучше выбрать с помощью кнопки Browse…, т.к. можно запутаться со слешами)
      И проверяете URL.
      После этого запускаете эту конфигурацию.

      Как вариант можно открыть сайт в браузере и вообще не нажимать на кнопку Run, а просто обновлять страницу.

  • а $this->load->….. появится???

    • Да, появится. Если этот вызов внутри контроллера.

  • а $this->load->….. появится???

    • Да, появится. Если этот вызов внутри контроллера.

  • А у меня по какой-то неведомой причине А у меня второй Eclipse вообще перестал автодополнять код… Часа три проимелся со всеми настройками, потом забил. Перешел обратно на PhpED. Имхо, если работать в Windows, то это самая удобная и быстрая IDE для PHP.

    • Странно, никогда не видел чтобы переставало работать автодополнение в eclipse.
      Кстати, раз вы работаете с PhpED, не хотите ли поучавствовать в создании сравнительной таблицы PHP IDE? Мы ее начали делать с Александром Макаровым, но заполнили данные только для тех IDE с которыми работали сами. Исходная таблица сделана в GoogleDocs, я могу открыть вам доступ.

      • Сходу все что знал написал в:
        http://alexshin.jino-net.ru/phpNuSphere.txt

        Если брать только по тем факторам, которые приведены в таблице, то в некоторых моментах phpNuSphere проигрывает Eclipse и Netbeans. Но! Есть много дополнительных плюшек… Для меня очень и очень удобна возможность интегрировать справочные системы через те же .chm файлы, которых более чем хватает для всех фреймворков, MySQL и т.д.

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

        Ну и, конечно, весь основной функционал интегрирован, а не настраивается через плагины => usability тоже сравнивать не приходится. Все продумано и очень-очень удобно. Правда платная =(

        • Добавлять новые параметры никто не запрещает 🙂

        • Перенес ваши данные в таблицу и отправил приглашение для редактирования.
          Если есть вопросы, задавайте.

        • ОК, спасибо. Сегодня вечерком сяду и покапаюсь по остальным факторам, которые есть в таблице, но я не знал/использовал.

  • А у меня по какой-то неведомой причине А у меня второй Eclipse вообще перестал автодополнять код… Часа три проимелся со всеми настройками, потом забил. Перешел обратно на PhpED. Имхо, если работать в Windows, то это самая удобная и быстрая IDE для PHP.

    • Странно, никогда не видел чтобы переставало работать автодополнение в eclipse.
      Кстати, раз вы работаете с PhpED, не хотите ли поучавствовать в создании сравнительной таблицы PHP IDE? Мы ее начали делать с Александром Макаровым, но заполнили данные только для тех IDE с которыми работали сами. Исходная таблица сделана в GoogleDocs, я могу открыть вам доступ.

      • Сходу все что знал написал в:
        http://alexshin.jino-net.ru/phpNuSphere.txt

        Если брать только по тем факторам, которые приведены в таблице, то в некоторых моментах phpNuSphere проигрывает Eclipse и Netbeans. Но! Есть много дополнительных плюшек… Для меня очень и очень удобна возможность интегрировать справочные системы через те же .chm файлы, которых более чем хватает для всех фреймворков, MySQL и т.д.

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

        Ну и, конечно, весь основной функционал интегрирован, а не настраивается через плагины => usability тоже сравнивать не приходится. Все продумано и очень-очень удобно. Правда платная =(

        • Добавлять новые параметры никто не запрещает 🙂

        • Перенес ваши данные в таблицу и отправил приглашение для редактирования.
          Если есть вопросы, задавайте.

        • ОК, спасибо. Сегодня вечерком сяду и покапаюсь по остальным факторам, которые есть в таблице, но я не знал/использовал.

  • rak

    А как быть с фтп соединениями? Т.е. если CodeIgniter лежит на фтпшнике? Я вот например промучался с rse, но автодополнение в нём так и не заработало. Даже стандартное =( Есть какие-либо идеи?

    • Честно говоря, не знаю. А почему нельзя разместить дистрибутив локально? Хотябы ради только автодополнения.

  • rak

    А как быть с фтп соединениями? Т.е. если CodeIgniter лежит на фтпшнике? Я вот например промучался с rse, но автодополнение в нём так и не заработало. Даже стандартное =( Есть какие-либо идеи?

    • Честно говоря, не знаю. А почему нельзя разместить дистрибутив локально? Хотябы ради только автодополнения.

  • Григорий

    Привет.

    У меня с Eclipse небольшая проблема: автодополнение вообще не работает. Создает PHP Project (Eclipse + PDT 2.0), вбиваю часть названия функции в коде — никаких эмоций. Как его включить?

  • Григорий

    Привет.

    У меня с Eclipse небольшая проблема: автодополнение вообще не работает. Создает PHP Project (Eclipse + PDT 2.0), вбиваю часть названия функции в коде — никаких эмоций. Как его включить?

  • Григорий

    Разобрался. Без активатора или Ctrl+Space Eclipse для PHP такого делать вообще не позволяет. 🙂 Ладно, будет ждать плагина или апдейта.

    • По-моему, это как раз не плохо, что нужно нажимать Ctrl+Space. Иногда автодополнение предлагает совершенно не подходящие варианты и только раздражает.
      Наверное, это дело привычки.

  • Григорий

    Разобрался. Без активатора или Ctrl+Space Eclipse для PHP такого делать вообще не позволяет. 🙂 Ладно, будет ждать плагина или апдейта.

    • По-моему, это как раз не плохо, что нужно нажимать Ctrl+Space. Иногда автодополнение предлагает совершенно не подходящие варианты и только раздражает.
      Наверное, это дело привычки.

  • Terry

    Владимир? а не могли бы Вы посвятить одну статью настройке eclipse с «коробки» до готовой и настроено среды работы с CodeIgniter? Для меня например еще остаеться непонятным: что представляют собой проекты в eclipse, почему не легче открывать файлы отдельно и редактировать их. Очень хочеться это все узнать: тоесть установка eclipse, настройка дебагера, создание проекта для работы с CodeIgniter, а также интересует вопрос как это все делать на установленом сервере xampp. Понимаю, что очень много вопросов, не все ясно выражены итд… Но думаю что очень многие пользователи будут Вам реально благодарны за такую статью)

    • Спасибо за идею!
      Я не уверен, что смогу в ближайшее время ее написать. К тому же тут много индивидуальных нюансов и предпочтений (eclipse можно настраивать как угодно, с одной стороны это хорошо, с другой — усложняет использование).
      В общем, я подумаю, что включить в статью и в каком виде.

  • Terry

    Владимир? а не могли бы Вы посвятить одну статью настройке eclipse с «коробки» до готовой и настроено среды работы с CodeIgniter? Для меня например еще остаеться непонятным: что представляют собой проекты в eclipse, почему не легче открывать файлы отдельно и редактировать их. Очень хочеться это все узнать: тоесть установка eclipse, настройка дебагера, создание проекта для работы с CodeIgniter, а также интересует вопрос как это все делать на установленом сервере xampp. Понимаю, что очень много вопросов, не все ясно выражены итд… Но думаю что очень многие пользователи будут Вам реально благодарны за такую статью)

    • Спасибо за идею!
      Я не уверен, что смогу в ближайшее время ее написать. К тому же тут много индивидуальных нюансов и предпочтений (eclipse можно настраивать как угодно, с одной стороны это хорошо, с другой — усложняет использование).
      В общем, я подумаю, что включить в статью и в каком виде.

  • Stas

    Я для работы с проектами на CodeIgniter пользуюсь Codelobster PHP Edition (http://www.codelobster.com) — это новая бесплатная очень приятная PHP IDE.

  • кстати вот мое решение этой проблемы: http://asakasinsky.blogspot.com/2011/02/codeigniter-eclipse-pdt-aptana-studio.html

    • Интересный вариант

      • спасибо, у вас весьма познавательный блог. Он в том числе блогов, с которых я начинал знакомится с CI и Eclipse