PHP einfach debuggen? Wie Funktionsaufrufe über mehrere Dateien überblicken

maccoX

Aktives Mitglied
Thread Starter
Dabei seit
15.02.2005
Beiträge
15.104
Reaktionspunkte
5.147
Hallo,

ich bin gerade dabei ein Magento Projekt zu debuggen und wühle mich durch die phtml und php Dateien... nicht schön...
Ich wühle mich gerade von der Fontendpreisanzeige zurück durch alle Dateien bis zu der Stelle wo die Bündel min/max Preise berechnet werden.

Mein größtes Problem dabei ist, es kommen immer wieder Funktionsaufrufe die irgendwo in einer anderen Datei definiert sind und scheinbar Datenbankabfragen wie z.B.:
$this->getPriceHtml($_product)
$this->_productLimitationFilters
$this->getTierPrices($_product);
$this->_getMinimalBundleOptionsPrice($product, $includeTax, $takeTierPrice);
$this->getTable('catalog/product_index_price')
$select->joinLeft($tableName, $joinCond, $colls);
$select->setPart(Zend_Db_Select::FROM, $fromPart);

Wie kann ich denn da immer schnell die passenden Dateien finden wo es weiter geht?

Auch bekomme ich in tiefer gelegenen PHP Dateien und Funktionen keine Reaktion mehr auf:
var_dump( $variable );
die();

Ist mein erstes Magento Projekt und das ich derart viel mit extrem verschachtelten PHP zu tun habe. Der Shop liegt auf einem Server wo ich nur per FTP Zugriff habe.

Habt ihr da einen Tipp für mich?
 
Zuletzt bearbeitet:

ruerueka

Aktives Mitglied
Dabei seit
04.04.2004
Beiträge
2.115
Reaktionspunkte
673
Um sinnvoll arbeiten zu können, benötigst du eine Kopie des Shops bei dir in der Entwicklungsumgebung und eine sinnvolle PHP IDE.
Dann kannst du sowohl zur Laufzeit den Stack im Debugger sehen, als auch bei einer "statischen" Codeanalyse mit den Hilfsmitteln der IDE die Aufrufe nachverfolgen.
Du kannst auch versuchen, ob du nicht ein Analyswerkzeug drüberlaufen lassen kannst, das die die Abhängigkeiten visualisiert.
Zend Studio oder Eclipse PDT könnten dir eventuell weiterhelfen. Ich entwickle nur Kleinigkeiten in PHP (mir genügt das Netbeans PHP Plugin) und kenne darum die Werkzeuge nicht genauer. Remote und per ftp an den live Quellen rumzudoktorn -> würde ich bleiben lassen...
 

wegus

MU Team
Dabei seit
13.09.2004
Beiträge
18.942
Reaktionspunkte
6.664
Ist nicht böse gemeint: Mit dem Wissenstand und den Tools laß bitte lieber die Finger davon!

Was brauchst Du? Mehr wissen über Objekte, wie sie interagieren und eine IDE wie PHPStorm die Dir die Relationen aufzeigt und vermutlich eine gute Portion wissen über Magento. Alte Versionen von Magento basieren noch auf dem ZendFramework. Neuere Versionen haben eine eigene Version/Entwicklung aus dem ZendFramework erstellt. Ohne wissen wie da was interagiert und ohne die Tools bist Du aufgeschmissen fürchte ich. Deswegen der Rat eingangs.
 

ruerueka

Aktives Mitglied
Dabei seit
04.04.2004
Beiträge
2.115
Reaktionspunkte
673
Irgendwann muss man ja mal anfangen - ich würde einen neuen Entwickler durchaus auf einer Kopie* des Kundensystem spielen lassen, aber es würde halt nie live gehen. Besser ist natürlich, wenn man das am Anfang immer "begleitet" machen kann - dann kann man die Einarbeitung/Lernkurve auch sinnvoll steuern. Bei uns wird niemand so ins kalte Wasser geschmissen...

* Natürlich immer nur mit anonymisierten personenbezogenen Daten.
 

maccoX

Aktives Mitglied
Thread Starter
Dabei seit
15.02.2005
Beiträge
15.104
Reaktionspunkte
5.147
Der Shop liegt auf einem Testserver (Änderungen werden dann aufs Live System übernommen) und ich will mich da jetzt eben einarbeiten. Hab auch leider Niemanden der mir da etwas zeigen könnte. Muss also das Beste draus machen.

Werde mir mal PHP IDE Programme ansehen, vielleicht ist das ja hilfreich.
Muss dann wohl die ganzen Shop Dateien lokal kopieren damit das Programm die zugehörigen Funktionen in den Dateien suchen kann (über FTP ist das ja wohl kaum möglich).

Hoffe nur da kommt man als Einsteiger leichter rein wie bei TYPO3, das war nämlich nur mit Kollegenhilfe sinnvoll möglich.
 

Difool

MU Team
Dabei seit
18.03.2004
Beiträge
15.490
Reaktionspunkte
12.979
Der Shop liegt auf einem Testserver (Änderungen werden dann aufs Live System übernommen) und ich will mich da jetzt eben einarbeiten. Hab auch leider Niemanden der mir da etwas zeigen könnte. Muss also das Beste draus machen.

Werde mir mal PHP IDE Programme ansehen, vielleicht ist das ja hilfreich.
Muss dann wohl die ganzen Shop Dateien lokal kopieren damit das Programm die zugehörigen Funktionen in den Dateien suchen kann (über FTP ist das ja wohl kaum möglich).

Hoffe nur da kommt man als Einsteiger leichter rein wie bei TYPO3, das war nämlich nur mit Kollegenhilfe sinnvoll möglich.
Der Debug-Modus sollte dir ja, wenn aktiviert, die Fehler im Frontend dann anzeigen.
Und da steht dann in welcher Datei und in welcher Zeile etc.

Die Kopie des Systems auf HD und dann die entsprechende Datei im Editor aufmachen und nachschauen.
 

wegus

MU Team
Dabei seit
13.09.2004
Beiträge
18.942
Reaktionspunkte
6.664
Typo3 mit Extbase kommt Zend Framework vom Umfang recht nahe! Aber wenn Du eine Teststellung und Zeit hast dann probier Dein Glück doch!

Allerdings ohne IDE wie Netbeans(kostenlos) oder PHPStorm(30 Tage Testversion) wirst Du in der Tat zuviel suchen müssen. Debugger sind gut und schön helfen einem aber nicht dabei die Übersicht zu bekommen.
 

bigahuna

Mitglied
Dabei seit
29.03.2009
Beiträge
25
Reaktionspunkte
18
Für das Debuggen von php bietet sich Xdebug an. Da bekommst Du den kompletten Call-Stack sowie die Werte aller Variablen übersichtlich ausgegeben. Und alles ist super reproduzierbar. Mit VisualStudio Code geht das von Haus aus. Für Chrome gibt es zum komfortablen Steuern die Erweiterung "Xdebug helper".
 
Oben