Есть ли PHP IDE, которая может обрабатывать кодовую базу Magento? - PullRequest
11 голосов
/ 07 февраля 2010

Magento имеет большую кодовую базу (более 6000 файлов php), использует сложную логику автозагрузки и имеет множество настроек в XML. Я ищу интегрированную среду разработки, которая может немного разбираться в этой кодовой базе - покажи мне, где объявлена ​​функция, где она вызывается и т. Д. Есть ли какая-либо IDE, которая может обрабатывать этого зверя?

РЕДАКТИРОВАТЬ - Добавление примеров

Вот пример того, как загрузить продукт способом Magento:

 $product = Mage::getModel('catalog/product')->load($productID)

Получение вспомогательного класса выглядит примерно так:

 $helper = Mage::getHelper('catalog/product')

Кроме того, методы получения и установки атрибутов часто предполагаются из модели, которая вполне может быть объявлена ​​где-то в файле XML, а не в коде.

Ответы [ 11 ]

14 голосов
/ 08 февраля 2010

Вероятно, не тот ответ, который вам нужен, но количество файлов, вероятно, не будет вашей ошибкой. Поскольку Magento использует странные методы для создания объектов (Mage::getModel и т. Д.), Нормальное завершение кода полностью теряется. Кроме того, Magento интенсивно использует магические функции PHP, которые, конечно, полностью освобождены от завершения кода.

Я работал с несколькими IDE, использующими Magento (Komodo, Zend Studio, Eclipse), и у меня никогда не было очень хорошего результата. Комодо был единственным, у которого не было угадывания коронарной артерии, поэтому я уже давно пользуюсь им.

Надеюсь, это поможет. Спасибо!

Джо

13 голосов
/ 09 февраля 2010

Сам поклонник Netbeans. Подсказки типов классов , которые поддерживаются как Zend Studio, так и Nebeans. Magento не спешил их устанавливать, но в коде есть несколько случаев.

http://files.zend.com/help/Zend-Studio-7/code_assist_concept.htm

 /* @var $myVar TestClass */
 $myVar = new getClass();
10 голосов
/ 24 августа 2012

Я разработал плагин с открытым исходным кодом для PHPStorm, может быть, вы хотите посмотреть: http://www.magicento.com

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

7 голосов
/ 07 февраля 2010

Если вы собираетесь получить бесплатную IDE, то Eclipse PDT будет работать просто отлично. Он может обрабатывать все эти файлы без проблем. Если вы хотите более полнофункциональную IDE, я бы выбрал Zend Studio. Zend Studio - это по сути Eclipse PDT с дополнительными функциями (например, действительно хорошим отладчиком / профилировщиком, встроенным в панель инструментов браузера и улучшенным форматированием кода из коробки).

6 голосов
/ 07 февраля 2010

Это будет связано с двумя факторами: умностью IDE (распознает ли она все автоматически загружаемые классы?) И простой производительностью (Сколько времени потребуется IDE для обхода дерева файлов для создания лексикона поиска? Как часто это будет обновляться?)

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

Я за одну работу с phpEd от Nusphere (14-дневная пробная версия здесь ). Я никогда не работал с таким большим проектом, но с большими, и я доволен функциональностью поиска кода. Как и, возможно, большинство IDE, он позволяет добавлять вручную включения в случае пропуска автозагрузки.

Тогда есть Zend Studio (скачать здесь ) и Eclipse PDT ( здесь ), и многое другое, на что можно посмотреть в этот вопрос . Не все из них выполняют Code Completion для PHP, поэтому вам придется выбирать те, которые делают.

3 голосов
/ 19 января 2012

Попробуйте подключаемый модуль Magento для IDE на основе Eclipse, который может обрабатывать объекты Magento (например, Mage :: helper ('helper'), Mage :: getModels ('module / model') и т. Д.).

http://code.google.com/p/magento-plugin

2 голосов
/ 06 октября 2014

Взгляд это расширение для PHPSTORM IDE . Я использую это, и это очень хорошо.

2 голосов
/ 17 января 2012

Я обнаружил, что использование любой разновидности Eclipse (Aptana, PDT или Zend) и хорошее использование функций документации, таких как / * @var ... * / comment, творит чудеса.

Например, если я работаю над пользовательским модулем Strube_MyModule со следующей структурой:

   Strube\
      MyModule\
          Block\
              Custom.php
          template\
              mymodule\
                  custom.phtml

Strube \ MyModule \ Blocks \ Custom.php

<?php
  class Strube_MyModule_Block_Custom extend Mage_Core_Block_Template {
    public function _construct() {
      $this->setTemplate('../../../../path/to/template/mymodule/custom.phtml');
    }

    /**
     * Eclipse is smart enough to follow PHP-Docs
     *
     * @return Mage_Customer_Model_Customer
     */
    public function getCustomer() {
      return Mage::getSingleton('customer/session')->getCustomer();
    }
  }

шаблон \ MyModule \ custom.phtml

<?php
  /**
   * PHP DOC!
   */
  /* @var $this Strube_MyModule_Block_Custom */
  // Now you can auto-complete $this->...
  // You can also <ctrl> + click on functions that descent from $this
  echo $this->getChildHtml();

  // It will also autocomplete based on PHP-doc @return tags
  echo $this->getCustomer()->getName();
1 голос
/ 10 июля 2015

Используя то, что @Laizer печально, Vinai создал скрипт оболочки, который генерирует ту карту классов, которую PhpStorm знает для чтения и автозаполнения функций и классов.

Смотрите репозиторий git: https://github.com/Vinai/phpstorm-magento-mapper

1 голос
/ 07 апреля 2013

JetBrains только что выпустил версию PHPStorm, которая обращается к заводским методам в Magento. http://blog.jetbrains.com/webide/2013/04/phpstorm-6-0-1-eap-build-129-177/ http://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...