PHP IDE с лучшим завершением кода?

Несмотря на то, что некоторые могут сказать, я считаю, что автозавершение кода (также известное как Intellisense) является вторым лучшим изобретение, когда дело доходит до редакторов кода (первая из которых - это окраска синтаксиса). Это действительно упрощает кодирование, потому что мне не нужно беспокоиться о том, назвал ли я функцию CalculateReportSums, ReportSumsCalculate или просто GetReportSums.

К сожалению, я еще не нашел редактора кода, который бы удовлетворительно реализовал эту функцию для PHP. Под «удовлетворительно» я подразумеваю «не хуже Visual Studio для C #».

Мой первый выбор текстового редактора - Notepad ++, но в нем есть только список встроенных функций PHP, и он появляется только после того, как вы нажмете Ctrl + SPACE. Я также пробовал Eclipse + PDT, что лучше, но по-прежнему часто возникает икота, иногда происходит сбой вообще без видимой причины (список недоступен) и всегда появляется только тогда, когда я приостанавливаю набор текста (установка тайм-аута на небольшое значение вызывает список, чтобы не появляться в целом).

Итак - есть ли что-нибудь получше? Что-то, что будет знать обо всех переменных в текущей области, что сможет следовать за include()s и будет отображать список в реальном времени по мере того, как я набираю?

Я знаю, что PHP - это динамический язык, и идеальное завершение кода в принципе невозможно (потому что вы не знаете, какие переменные будут там до времени выполнения), но все же должна быть возможность реализовать его в довольно хорошей степени - очень лучше, чем то, что я видел до сих пор.

Добавлено: чтобы добавить несколько незначительных моментов - я хочу, чтобы CC был мгновенным, как в Visual Studio. Я набираю символ, и сразу появляется список. Я набираю еще один символ, и список уменьшается вдвое, прежде чем я успеваю даже моргнуть. Практически нулевая загрузка ЦП, мгновенные результаты (да здравствуют боги кеширования!).

Кроме того, я хорошо документирую свои функции и даже переменные особым образом. Я предпочитаю синтаксис PHPLint (потому что тогда я смогу проверить с ним свой код позже), но подойдут и другие синтаксисы. Принуждение к этому также полезно для вашей дисциплины комментирования. :)


person Vilx-    schedule 15.11.2009    source источник


Ответы (11)


Я обнаружил, что Netbeans имеет лучшее завершение кода, чем Aptana. Когда я работал с codeigniter, Netbeans полностью кодировал мои статические методы в моделях, в которых Aptana этого не делала.

После того, как я опубликовал это, JetBrains выпустила PHPStorm и имеет ваш быстрый интеллект, а также еще более качественные подсказки типов. ИМХО абсолютно превосходит все остальные. Уже несколько месяцев пользуюсь EAP 2.0 бесплатно.

person Brandon G    schedule 15.11.2009
comment
Это мгновенно или вам нужно приостановить набор текста? Это одна из вещей, которая больше всего меня раздражает в PDT. - person Vilx-; 15.11.2009
comment
Вам нужно сделать паузу на полсекунды? Если вы продолжите вводить, список автозаполнения не появится. Я использую NetBeans и очень доволен, поэтому проголосовал за это. - person Ray Hidayat; 15.11.2009
comment
Вот и все - вы должны сделать паузу на полсекунды. То же, что и в Eclipse. Мне это не нравится. :П - person Vilx-; 15.11.2009
comment
Ctrl - Spacebar, и сразу же открывается диалоговое окно автозаполнения. - person jason; 15.11.2009
comment
... который так же раздражает, если не больше. :) - person Vilx-; 15.11.2009
comment
Я все еще думаю, что это, вероятно, самый быстрый из существующих. Поток разработки указывает, что с каждым выпуском он становится все быстрее. - person Brandon G; 15.11.2009
comment
Может быть, его можно настроить мгновенно? Eclipse может - но это не работает. - person Vilx-; 16.11.2009
comment
В Eclipse перейдите к: Window -> Preferences -> PHP -> Editor -> Code Assist И вы можете настроить задержку автоматической активации - person jason; 16.11.2009
comment
Как я уже сказал - работает только теоретически. :( - person Vilx-; 16.11.2009
comment
Понятия не имею, о чем вы говорите. Работает нормально. Какую версию Eclipse и PDT вы используете? - person jason; 16.11.2009
comment
Последний. Если я установлю его на 0 (или 1, или что-то еще маленькое), список вообще не появится. - person Vilx-; 16.11.2009
comment
Затем установите что-нибудь разумное. Это в миллисекундах. У меня 200, и это просто идеально. Не всплывает, когда я не хочу, всплывает, если да. - person jason; 16.11.2009
comment
Я лично предпочитаю Netbeans и нажатие cntrl space, что довольно быстро является второй натурой. Таким образом, автозаполнение не затуманивает код и не скрывает все остальное, когда я этого не хочу. Я не хочу, чтобы это постоянно мешало мне понять, что я набираю, и сделать невозможным чтение остальной части моего кода. Он должен быть там, когда я хочу, но не отвлекать. - person Cryophallion; 16.11.2009
comment
Думаю, я просто привык к Visual Studio и хочу такого же поведения и во всем остальном. Там автозаполнение появляется мгновенно, и если мне это не нужно, я нажимаю Esc, что уже стало для меня второй натурой. - person Vilx-; 16.11.2009
comment
Ctrl - Space для автозаполнения - это то же поведение, что и VS. - person jason; 16.11.2009
comment
Да, но не показывать, пока я печатаю не. - person Vilx-; 16.11.2009
comment
Если вам нужно поведение Visual Studio, почему бы вам не использовать Visual Studio? Я уверен, что есть какой-нибудь плагин для работы с PhP. - person Arkh; 07.01.2010
comment
Обратите внимание на это: jcxsoftware.com/vs.php - person Brandon G; 11.01.2010
comment
Я понимаю, что это старая тема, но я хотел сказать, что PhpStorm имеет мгновенное автозаполнение, которое ищет OP - список появляется мгновенно (после одного символа - ctrl + пробел, если символы не введены) и не исчезает при вводе . Он также нечувствителен к регистру, игнорирует начальные символы подчеркивания (защищенные члены часто имеют префикс _ в PHP) и имеет завершение CamelCase. Метод: CalculateReportSums, для автозаполнения введите: CRS. Это просто лучший вариант автозаполнения в любой PHP IDE, да и все остальное в нем тоже круто, lol. И нет, я не работаю в JetBrains. - person Nils Luxton; 16.08.2011
comment
+1 за добавление PHPStorm к вашему ответу. - person user456584; 12.06.2012
comment
Только что проверил свой список лучших вопросов и наткнулся на этот старый. +1 для PHPStorm. Я использую ее сейчас на работе, и, честно говоря, это единственная другая IDE, которую я с радостью рекомендую людям, помимо Visual Studio. Жаль, что у него нет бесплатной версии, но для профессионального развития она стоит каждого цента. - person Vilx-; 15.02.2020

Вы правы, что intellisense намного сложнее в динамически типизированном языке, таком как php. Рассмотрим, например,

  function get_foo($x) {
       return $x ? new abc() : new xyz();
  }

  get_foo(123)->... can your IDE autocomplete here?

Не знаю о PDT, но Netbeans не может с этим справиться, а phped требует, чтобы get_foo был аннотирован особым образом.

Я еще не пробовал готовящийся к выпуску WebIDE от Jetbrains (http://www.jetbrains.com/webide/features/index.html), но в этом отношении выглядит многообещающе (см. снимок экрана).

person user187291    schedule 15.11.2009
comment
Я хорошо документирую свои функции особым образом (предпочтительнее синтаксис PHPLint, но я не слишком разборчив). Требование этого для работы CC - это хорошо для дисциплины комментирования. :) - person Vilx-; 16.11.2009
comment
WebIDE выглядит нормально, интересно, насколько он мгновенный - на скриншотах этого не видно. :( - person Vilx-; 16.11.2009
comment
Ой, упс, это всего лишь предварительная версия, срок действия которой истекает через 45 дней. Очень плохо. :( - person Vilx-; 16.11.2009
comment
Netbeans справится с этим. Задайте объект @return в методах javadoc. если вы собираетесь вызвать метод из функции, возвращающей объект неизвестного типа, у вас должен быть абстрактный класс в качестве возвращаемого типа. - person Brandon G; 16.11.2009
comment
@Brandon: не думаю, что мне нужно что-то делать для поддержки IDE. IDE помогают мне выполнять свою работу так, как я хочу. Я не собираюсь отказываться от своих привычек кодирования только потому, что какой-то идеал недостаточно умен, чтобы с ними справиться. - person user187291; 16.11.2009
comment
Достаточно справедливо, но если вы возвращаете разные объекты на основе условного оператора, ваш ide не будет знать, из какого объекта завершить код, и, по сути, вы тоже. Основываясь на примере, который вы мне дали, если вы попытаетесь вызвать метод из abc, который недоступен в xyz, и метод вернул экземпляр xyz, вы получите ошибку. Вот почему абстрактный класс - хорошая идея и не имеет ничего общего с поддержкой ide. Ide действительно поддерживает динамичность PHP, позволяя указать тип возвращаемого значения в документе, IMHO. - person Brandon G; 16.11.2009
comment
Не позволяйте поставщикам IDE вводить вас в заблуждение - они требуют, чтобы вы использовали аннотации и интерфейсы, потому что их продукты не будут работать без них, а не потому, что это хорошая идея. - person user187291; 16.11.2009
comment
Я использую редактор Шредингера, который представляет собой квантовую суперпозицию возвращаемых типов new abc() и new xyz(). - person Farzher; 27.01.2016

Несомненно, используйте NetBeans, это очень полезно и имеет хороший интеллект (хорошо, не идеально), но, например, лучше, чем Eclipse.

person MCunha98    schedule 16.11.2009

Я рекомендую вам netbeans. Это бесплатно. он доступен для всех платформ и в основном хорош для редактирования php, jsp, java, css, html, ... Хорошо для SVN, mercurial, плюс вы можете легко интегрировать его с kenai.com ...

это помогает при появлении всплывающих окон IntelliSense.

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

person JSixface    schedule 27.11.2009

Я использую PHPEd (http://www.nusphere.com/), в котором есть работоспособная версия этой функции. .

примечание: у них есть предложения, перечисленные на их первой странице. Игнорируйте это. Он заканчивается завтра как минимум четыре года назад.

person Rik Heywood    schedule 15.11.2009

Я так понимаю, вы работаете в Windows. В Windows я обычно использую phpDesigner (http://www.mpsoftware.dk/phpdesigner.php ) с неплохим CC. В Linux я использую geany (http://www.geany.org/) или vim, оба из которых есть CC, в последнем случае вам нужно будет его настроить. Я обнаружил, что Eclipse слишком раздут, и мне надоело ждать его запуска. : \

person agentile    schedule 16.11.2009

У Kimodo хорошее автозавершение кода, раскрывающее не только функции в PHP, но и то, что вы объявили в текущем контексте. Кроме того, если вы правильно задокументировали свою функцию или что-то еще, она также отображает эту документацию!

person John Fiala    schedule 16.11.2009

Я еще не видел ничего, что превосходило бы автоматическое завершение, которое было в Zend Studio 5.x. Я пробовал более поздние версии, которые построены на Eclipse, и с таким же успехом мог бы использовать Aptana ...

К сожалению, это означает сохранение внешнего вида окон XP или 2000, так как графический интерфейс Java (тот, на котором была построена Zend Studio) ошибается в Win7 Look, но с учетом возможностей Zend 5 это того стоит.

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

Плюс возможность запускать локально внутри самой Zend Studio для тестирования частей кода - это здорово. Если бы только это легко позволяло вам сохранять как в локальной файловой системе, так и загружать на сервер одновременно .... (я просто позволяю программе FTP работать в фоновом режиме, которая каждые 10 минут будет загружать любые изменения на сервер).

person Greg K    schedule 07.01.2010
comment
Аминь. Это, по-видимому, все еще верно, но ZS5 сейчас стареет еще больше. Вы что-нибудь нашли? Komodo8 с некоторыми плагинами не так уж и плох. - person Jaimie Sirovich; 14.07.2013

vim.

http://weierophinney.net/matthew/archives/123-Vim-7-code-completion.html

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

Завершение слов / кода в VIM

person icco    schedule 15.11.2009
comment
Он также анализирует мой код или показывает только предварительно определенные ключевые слова? - person Vilx-; 16.11.2009
comment
Я вообще-то не знаю. Я полагаю, что нет, но я не использую его, я просто знаю, что он существует, извините. - person icco; 16.11.2009

Вы можете попробовать Zend Studio.

person Alix Axel    schedule 15.11.2009

http://www.aptana.org/

Code Assist
Помогает в разработке HTML, CSS, JavaScript, PHP и Ruby. Поддерживает последние спецификации HTML5. Включает информацию об уровне поддержки каждого элемента в основных веб-браузерах.

person Jim Schubert    schedule 15.11.2009
comment
Это основано на том же PDT, что и Eclipse. Как-то не верю ... - person Vilx-; 15.11.2009
comment
Что действительно раздражает в Aptana, так это то, что она пытается тайно установить свою профессиональную демоверсию при каждом автоматическом обновлении. Это верный способ заставить меня никогда не давать им ни цента или использовать их продукт. - person Brandon G; 16.11.2009
comment
@Vilx: Aptana доступна в виде отдельного плагина или плагина Eclipse. @Brandon: Это довольно неприятно, но это не помешало мне использовать его функции. Я даже думал о покупке про-версии. - person Jim Schubert; 16.11.2009
comment
Хороший. Спасибо, что предупредили меня! :П - person Vilx-; 16.11.2009
comment
Профессиональной версии больше не существует, и, начиная с версии 2.0, также не существует встроенной поддержки PHP. - person codeinthehole; 16.11.2009
comment
@codeinthehole: Да, я только что это видел. Думаю, надо все обновить. - person Jim Schubert; 16.11.2009
comment
@codeinthehole. Спасибо за обновления. Прошло несколько месяцев с момента моей последней загрузки. - person Brandon G; 16.11.2009
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - person edorian; 28.08.2012
comment
@edorian Одно дело для ссылок на статьи, которые часто меняются или исчезают, и другое дело для ссылок на авторитетное программное обеспечение, которое существует и действительно добавляет функциональности в течение многих лет. Я прислушался к вашему совету и добавил отрывок о функциональности Aptana Studio, которая (на мой взгляд) остается неизменной в течение 3 лет. - person Jim Schubert; 28.08.2012
comment
Уважаемые ребята, если не стоит доверять поддержке кода Aptana, какая еще IDE предоставляет эту функцию как для PHP, так и для JS? Спасибо! - person midnite; 27.12.2013
comment
@midnite С тех пор я преобразовал линейку IDE Jetbrains. У меня есть личная лицензия на WebStorm для приложений HTML / CSS / JavaScript. На работе у меня есть лицензии на PHPStorm и IntelliJ Ultimate. Если вы работаете только с PHP / JS, PHPStorm довольно хорош. IntelliJ делает все это (PHP, Scala, Android, node.js, JavaScript) - person Jim Schubert; 27.12.2013
comment
Спасибо @JimSchubert за ответ. Я нашел хорошую IDE для веб-разработчиков (в основном PHP, JS, XHTML). PHPStorm кажется хорошим. Но у меня проблема с его помощником по коду. - person midnite; 27.12.2013