2010-02-07 6 views
10

Magento ha una grande base di codice (6000+ file php), usa una complessa logica di autoloading e ha un sacco di configurazione in XML. Sto cercando un IDE che possa avere il suo piccolo cervello attorno a questo codice base - mostrami dove viene dichiarata una funzione, dove è chiamata, ecc. C'è qualche IDE in grado di gestire questa bestia?Esiste un IDE PHP in grado di gestire la base di codice di Magento?

EDIT - Aggiunta di esempi

Ecco un esempio di come caricare un prodotto il modo Magento:

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

Ottenere una classe di supporto è simile:

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

Inoltre, getter e setter di attributi sono spesso assunti dal modello, che potrebbe essere stato dichiarato in un file XML da qualche parte , piuttosto che nel codice.

+0

mi riguarda qui in primo luogo con il modo insolito di Magento di instanciating oggetti e facendo riferimento alle classi. La dimensione della base di codice è meno preoccupante. – Laizer

+0

Puoi fare un esempio di tale istanziazione? –

+0

Ricorda inoltre che le maniglie utilizzate per caricare i prodotti potrebbero non mappare sempre il tuo modo di pensare. Mentre il catalogo/prodotto dovrebbe essere mappato a Mage_Core_Catalog_Model_Product, qualcuno potrebbe averlo sovrascritto a una classe completamente diversa e riscritto alcuni dei metodi. –

risposta

14

Probabilmente non è la risposta che vuoi, ma il numero di file probabilmente non sarà il tuo fioretto qui. Dato che Magento usa strani metodi per istanziare oggetti (Mage::getModel ecc.), Il normale completamento del codice è completamente in perdita. Inoltre, Magento fa un uso pesante delle funzioni magiche di PHP, che ovviamente sono completamente esenti dal completamento del codice.

Ho lavorato con alcuni IDE utilizzando Magento (Komodo, Zend Studio, Eclipse) e non ho mai avuto un risultato molto buono. Komodo era l'unico che non aveva una coronaria che cercava di indovinare, quindi l'ho usato già da tempo.

Spero che questo aiuti. Grazie!

Joe

6

Ci saranno due fattori: intelligenza IDE (riconoscerà tutte le classi caricate automaticamente?) E prestazioni piane (quanto tempo impiega l'IDE a percorrere l'albero dei file per creare un lessico di ricerca ? Quanto spesso sta per aggiornare?)

Se un IDE può gestire tali quantità di file dipende fortemente dal modo in cui la macchina è equipaggiata. Ti consiglio di passare attraverso le versioni di prova dei più popolari IDE PHP e di individuare quello più adatto alle tue esigenze. Dovrebbe essere abbastanza facile scoprire se è possibile lavorare con loro o no.

I per un lavoro con phpEd di Nusphere (14 giorni di prova here). Non ho mai lavorato con un progetto così grande, ma grandi e sono soddisfatto della funzionalità di ricerca del codice. Come probabilmente la maggior parte degli IDE, consente l'aggiunta manuale di include nel caso in cui manchi un autoload.

Poi c'è Zend Studio (Scarica here) ed Eclipse PDT (here), e molto altro da guardare in this question. Non tutti completano il codice per PHP, quindi dovrai scegliere quelli che lo fanno.

+1

sto usando eclipse con PDT e funziona in modo piuttosto efficiente. – MANCHUCK

1

Ho usato Netbeans per lavorare su grandi progetti PHP (gestisce anche grandi progetti Java e C). I miei attuali progetti CakePHP hanno 35000 file, 4000-5000 di essi sono file PHP incluse librerie esterne ecc.

L'IDE è reattivo per qualche tempo, ma se lo mantieni in esecuzione durante la notte l'IDE diventa lento e devi riavviarlo .

7

Se si utilizza un IDE gratuito, Eclipse PDT funzionerà correttamente. Può gestire tutti quei file senza problemi. Se vuoi un IDE più completo, sceglierei Zend Studio. Zend Studio è essenzialmente Eclipse PDT con funzionalità aggiuntive (come un debugger/profiler veramente carino integrato in una barra degli strumenti del browser e una migliore formattazione del codice pronta all'uso).

+3

Ora sto lavorando con PDT e sembra essere completamente all'oscuro del funk di autoloading di Magento. Come lo illuminerei? – Laizer

+0

Prova ad aggiungere il percorso a Magento nelle tue librerie per il progetto. – mylesmg

13

Un fan di Netbeans. Quello che stai cercando è Suggerimenti tipo di classe supportati da Zend Studio e Nebeans. Magento è stato lento nell'impostare questi, ma ci sono alcune occasioni nel codice.

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

 
/* @var $myVar TestClass */ 
$myVar = new getClass(); 
+0

Lo apprezzo molto. Grazie! –

+0

Attualmente questo link sopra è morto. –

2

ho trovato che utilizzando qualsiasi sapore di Eclipse (Aptana, PDT, o Zend), e facendo buon uso delle funzioni di documentazione come il/* @var ... */commento fa miracoli.

Per esempio, se sto lavorando su un modulo personalizzato chiamato Strube_MyModule con la seguente struttura:

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

Strube \ MyModule \ Blocchi \ 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(); 
    } 
    } 

modello \ mymodule \ personalizzato .phtml

10

ho sviluppato un plugin open source per PhpStorm, forse si vuole dare un'occhiata: http://www.magicento.com

Il plugin in grado di gestire ciò che si sta chiedendo e ha anche più funzioni, come completamento automatico nei file xml. Aggiungerò più funzionalità ogni settimana, perché utilizzo il plugin nel mio lavoro quotidiano. Spero che diventi utile anche per te.

1

Utilizzando ciò che @Laizer è triste, Vinai ha creato uno script di shell che genera quella mappa di classe che PhpStorm sa leggere e completare automaticamente funzioni e classi.

Vedere il repository git: https://github.com/Vinai/phpstorm-magento-mapper

Problemi correlati