Laravel Tools für WordPress: Debuggen mit `dd` & `dump` statt `print_r`

Das Diagnostizieren von Fehler beim Programmieren von WordPress Plugins & Themes in PHP sieht bei mir meistens wie folgt aus:

// ...
echo '<code>';
print_r($meine_variable_in_der_ich_einen_fehler_vermute);
echo '</code>';
exit;
// oder
echo '<pre>';
var_dump($meine_variable_in_der_ich_einen_fehler_vermute);
echo '</pre>';
die;Code-Sprache: PHP (php)

Nicht besonders elegant, aber so sieht meistens die Praxis in PHP aus. Selbst in der offiziellen PHP Dokumentation gibt es keine sinnvollen Vorschläge, wie man in PHP sauber Fehler diagnostizieren kann.

Der richtige Weg: Xdebug

Sicherlich ist Xdebug das beste Werkzeug um Fehler im PHP Code zu suchen. Es hält die Ausführung von PHP an und man kann sich alle aktuell initialisierten Variablen genau anschauen.

Allerdings stehe ich mit Xdebug absolut auf Kriegsfuß. Die Installation ist leider alles andere als einfach. Ich brauche meistens 1-2 Stunden um Xdebug auf meinen Mac zum Laufen zu bekommen. Dann bin ich aber meistens so genervt, dass ich Feierabend mache und Xdebug einige Tage in Ruhe lasse. Brauche ich es dann ein paar Tage später wieder, ist schon wieder irgendetwas kaputt, z.B. Xdebug hält die Ausführung nicht an, obwohl ich einen Breakpoint gesetzt habe. In anderen Dateien funktioniert es aber ohne Probleme ?.

Statt wieder 1-2 Stunden in das Debuggen des Debuggers zu investieren, spring ich dann wieder auf die alt bewährte Methode print_r…, die immer funktioniert.

dd & dump

Aus der Laravel-Welt (wobei diese auf einem Synfony Component basieren) sind mir die zwei kleine Hilfsfunktionen dd & dump bekannt, die im Prinzip das gleich wie print_r bzw. var_dump machen, aber viel kürzer zu schreiben sind und die Ausgabe hübsch machen.

dump des WP_Query Objektes

dump gibt einfach eine oder mehrere Variable aus:

dump($value);

dump($value1, $value2, $value3, ...);Code-Sprache: PHP (php)

dd ist eine Abkürzung für dump & die und gibt eine oder mehrere Variablen aus und beendet anschließend die Ausführung:

dd($value);

dd($value1, $value2, $value3, ...);Code-Sprache: PHP (php)

In WordPress nutzen

Kann man das nicht auch in WordPress nutzen? Natürlich und es gibt sogar schon ein passendes Plugin: Laravel DD for WordPress

Einfach in der Entwicklungsumgebung installieren & aktivieren und fröhlich dd & dump schreiben!

Nicht vergessen solltet ihr aber alle dd & dump’s vor dem Push in die Live-Seite wieder zu entfernen (ist mir auch schon passiert). Sonst gibt es sicherlich wieder ein paar nette Fehler zu debuggen.

Next Level: Ray

Noch ein Schritt weiter geht die kostenpflichtige App Ray (29€/Jahr, kann aber kostenlos getestet werden) für MacOS. Statt dump($value) schreibt man ray($value) und die Ausgabe erfolgt direkt schön aufbereitet in der Ray App statt im Browser.

Um Ray in WordPress nutzen zu können, müsst ihr neben der Ray App in eurer Entwicklungsumgebung das Ray WordPress Plugin installieren. Anschließend kann das debuggen beginnen.

Einen guten Eindruck vermittelt das folgende kurze Video:

Durch Laden des Videos akzeptierst du die Datenschutzerklärung von Vimeo. Video laden Auswahl speichern & immer Vimeo laden

Ray wurde von Spatie, einer belgischen Agentur spezialisiert auf Laravel, entwickelt. Spatie ist in der Laravel Community dafür bekannt sehr viele Open Source Laravel Packages zu pflegen. Zunehmend entstehen aber auch größere jedoch kostenpflichtige Produkte wie Ray oder Mailcoach (Newsletter-Versand). Sowohl die Packages als auch die Produkte haben eine außergewöhnlich hohe Codequalität und werden bei neuen Laravel-Releases innerhalb weniger Tagen geupdated. Alleine deswegen kann man hier die 29€ pro Jahr (kein Abo nur eine jährliche Lizenz) getrost investieren.

Laravel Tools für WordPress

Dieser Beitrag ist Teil meiner kleinen Serie Laravel Tools für WordPress, wo ich euch Tools vorstelle, die ich aus der Laravel-Welt kenne, aber auch problemlos für WordPress genutzt werden können.

7 Reaktionen zu “Laravel Tools für WordPress: Debuggen mit `dd` & `dump` statt `print_r`

    1. Hey Sven,

      danke, schaue ich mir mal an! Einfacher klingt auf jeden Fall besser. Ich hoffe es funktioniert dann auch in VSCode. Da hat es bisher bei mir immer am meisten gehapert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert