Adventskalender Tag 2 – PHP Debuggen in der Browser-Console

Adventskalender Tag 2 – PHP Debuggen in der Browser-Console 1

Es gibt diverse Libraries und Tutorials im Netz um das Debuggen aus PHP heraus in die Console des Browsers zu verlagern. Nicht selten kommen dabei recht komplexe Lösungen heraus, die ab und an auch Mehrwert darstellen, nicht selten aber wird mit Kanonen auf Spatzen geschossen.
Gerade beim Debuggen in UIs, beim Kunden ist die Ausgabe in der Konsole ein Vorteil, da UIs nicht verändert werden und Kunden nichts mitbekommen, auch ohne die Abfrage der Rechte.

debug-in-console

Eine einfache und schnelle Möglichkeit möchte ich hier als Snippet abwerfen, die mir als Alltagslösung vollkommen ausreicht. Die Lösung kann in den Tools der gängigen Major Browsern genutzt werden und ebenso im Add on Firebug für den Firefox, wie die folgenden Screenshots aufzeigen.

Javascript und PHP

Die Console nutz die Javascript Funktion console() in allen Major Browsers um Inhalte in ihr auszugeben. Insofern nutze ich eine kleine Funktion debug_to_console(), die dieses Script in PHP ausspuckt und die Inhalt via Variable übergibt. Die Funktion sollte nicht schwer im Verständnis sein und via Variable $data werden die zu debuggenden Inhalte an die Console übergeben.


if ( ! function_exists( 'debug_to_console' ) ) {
	/**
	 * Simple helper to debug to the console
	 *
	 * @param  object, array, string $data
	 * @return string
	 */
	function debug_to_console( $data ) {

		$output = '';
		$output .= 'console.info( 'Debug in Console:' );';
		$output .= 'console.log(' . json_encode( $data ) . ');';

		echo '' . $output . '';
	}
}

debug-in-console-ff

Die Ausgabe ist mit verschieden Typen möglich, ebenso mit Arrays und Objekten. Die kleine Helferfunktion habe ich unter anderem im WordPress Plugin Debug Objects hinterlegt. Wer dieses Plugin in seiner Entwicklungsumgebung aktiv hat, muss sich daher nicht kümmern, einfach nutzen.

Freu dich auf morgen. Dann bringt dir der MarketPress-Adventskalender: ein kleines Code-Snippet.

Newsletter abonnieren

Das könnte dich auch interessieren

Lokale Installation von WordPress und WooCommerce

Über eine lokale Installation von WordPress auf deinem Computer kannst du WooCommerce testen, Updates einspielen und Anpassungen durchführen - alles r ...

Mehr erfahren

WooCommerce einrichten Teil 1 - Grundeinstellungen & Produkte

Aktualisiert am 14.12.2020 Die Onlineshop-Erweiterung WooCommerce ist ein mächtiges Werkzeug mit unzähligen Einstellungsmöglichkeiten. Der nachfolgen ...

Mehr erfahren

Online-Kurse mit WordPress erstellen und mit WooCommerce verkaufen

Online-Kurse sind zeitgemäß und vermitteln ortsunabhängiges Wissen an Lernende. Über den Verkauf von Online-Kursen mit WooCommerce kannst du dein eigen ...

Mehr erfahren

Kommentare

6 Kommentare

  1. Ein schönes kleines Snippet. Ich nutze für solches Debugging meistens FirePHP, da es auch andere Ausgabeformate wie beispielweise Tabellen anbietet. Aber für das kleine Debugging zwischendurch (Cross-Browser) reicht dein Snippet vollkommen aus und ist allemal besser als eine Ausgabe direkt in den Inhalt, wie es leider noch immer viele machen (und dann vergessen den ganzen Code wieder zu entfernen).

    1. @Bernhard: richtig, wenn ich in die Tiefe debuggen will nutze ich ChromePHP, da ich viel im Chromium arbeite. Auch diese Lib ist im Debug Objects plugin drin, so dass sie ad hoc genutzt werden kann. Hinweise dazu sind auf der Settings page.

  2. Hm, ChromePHP kannte ich auch noch nicht. Wäre aber toll, wenn das kompatibel zu FirePHP ist, damit man nicht verschiedene Debugger in Teams einsetzen muss. Einige Entwickler bei uns arbeiten nämlich noch immer lieber mit Firefox. Oder ich schreibe einfach ne Wrapper-Klasse, die dann die passende Library benutzt.

    1. So weit mir bekannt, läuft alles im FF; insofern kannst du ad hoc starten.

  3. Ich habe mit ChromePHP bzw. Chrome Logger mal angesehen. Leider ist es nicht kompatibel mit FirePHP und der Entwickler hat auch nicht vor das zu ändern. Er beschreibt selbst, dass er zur Ablage der Daten Cookies verwendet, die aber einer Größenbegrenzung unterliegen. Man kann also nicht so große Objekte debuggen, wie mit anderen Tools.

    Ich setze daher schon eine Zeit lang Webug ein. Damit kann ich auf dem Server weiterhin FirePHP verwenden und jeder Entwickler kann dann entweder in Firefox oder eben in Chrome die Debugging-Daten auf der Konsole ausgeben lassen.

    1. @Bernhard: Danke dir, Webug werde ich mir auch mal ansehen.

Schreibe eine Antwort

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

Du kannst folgende HTML Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>