Magento拥有庞大的代码库(6000多个php文件),使用复杂的自动加载逻辑,并且在XML中有很多配置。我正在寻找一个可以在这个代码库中获得它的小脑筋的IDE - 告诉我声明函数的位置,调用它的位置等等。有没有可以处理这个野兽的IDE?
编辑 - 添加示例
以下是如何使用Magento方式加载产品的示例:
$product = Mage::getModel('catalog/product')->load($productID)
获得帮助类看起来很相似:
$helper = Mage::getHelper('catalog/product')
此外,通常从模型中假设属性的getter和setter,它们很可能已在某个地方的XML文件中声明,而不是在代码中声明。
答案 0 :(得分:14)
可能不是你想要的答案,但文件的数量可能不会是你的陪衬。由于Magento使用奇怪的方法来实例化对象(Mage::getModel
等),所以正常的代码完成完全不知所措。最重要的是,Magento大量使用PHP的魔术功能,当然这些功能完全免于代码完成。
我使用过Magento(Komodo,Zend Studio,Eclipse)的几个IDE,我从未有过很好的结果。科莫多是唯一一个没有冠状动脉试图猜测的人,所以我已经使用了一段时间了。
希望有所帮助。谢谢!
乔
答案 1 :(得分:13)
一个Netbeans粉丝自己。您正在寻找的是Zend Studio和Nebeans都支持的 Class Type Hints 。 Magento在设置这些方面一直很慢,但在代码中有一些情况。
http://files.zend.com/help/Zend-Studio-7/code_assist_concept.htm
/* @var $myVar TestClass */ $myVar = new getClass();
答案 2 :(得分:10)
我为PHPStorm开发了一个开源插件,也许你想看看: http://www.magicento.com
该插件可以处理您的要求,还具有更多功能,例如xml文件中的自动完成功能。我会每周添加更多功能,因为我在日常工作中使用插件。我希望它对你也有用。
答案 3 :(得分:7)
如果您要使用免费的IDE,那么Eclipse PDT就可以正常运行。它可以毫无问题地处理所有这些文件。如果你想要一个功能更全面的IDE,我会选择Zend Studio。 Zend Studio本质上是Eclipse PDT,具有其他功能(如浏览器工具栏中内置的非常好的调试器/分析器,以及开箱即用的更好的代码格式)。
答案 4 :(得分:6)
这将取决于两个因素:IDE智能(是否会识别所有自动加载的类?)和简单的性能(IDE需要多长时间才能通过文件树来构建查找词典?它多久会刷新一次?)
IDE是否可以处理这些数量的文件在很大程度上取决于您的机器配备方式。我建议您浏览最流行的PHP IDE的试用版,看看哪一个最适合您。你应该很容易找出是否能与他们合作。
我与Nusphere的phpEd合作(14天试用here)。我从未使用过那么大的项目,但是大项目,我对代码查找功能感到满意。与大多数IDE一样,它允许手动添加包含,以防错过自动加载。
然后是Zend Studio(下载here)和Eclipse PDT(here),还有更多要在this question中查看。并非所有人都为PHP执行代码完成,因此您必须选择那些代码完成。
答案 5 :(得分:3)
尝试基于Eclipse的Magento插件,可以处理Magento实例化对象(如Mage :: helper('helper'),Mage :: getModels('module / model')等)。
答案 6 :(得分:2)
我发现使用任何类型的Eclipse(Aptana,PDT或Zend),并充分利用文档功能,如/ * @var ... * / comment确实存在奇迹。
例如,如果我正在处理名为Strube_MyModule的自定义模块,其结构如下:
Strube\ MyModule\ Block\ Custom.php template\ mymodule\ custom.phtml
Strube \ MyModule的\块\ 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();
答案 7 :(得分:2)
查看this的PHPSTORM IDE扩展名。我确实使用它并且非常好。
答案 8 :(得分:1)
我使用Netbeans处理大型PHP项目(它还处理大型Java和C项目)。我目前的CakePHP项目有35000个文件,其中4000-5000个是PHP文件,包括外部库等。
IDE会响应一段时间,但是如果你让它一夜之间运行,IDE会变得迟钝,你需要重新启动它。
答案 9 :(得分:1)
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
答案 10 :(得分:1)
使用@Laizer悲伤,Vinai创建了一个shell脚本,生成PhpStorm知道读取的类映射并自动完成函数和类。