Adventskalender Tag 2 – PHP Debuggen in der Browser-Console

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

Schaue unsere Datenschutzverordnung an

Das könnte dich auch interessieren

Anleitung: WooCommerce mit den Gutenberg Blocks verwenden

Seit WordPress 5.0 hast du die Möglichkeit, WooCommerce Produkte einfach per Drag & Drop in deine Beiträge und Seiten einzufügen - der neue Gutenberg Ed ...

Mehr erfahren

Neues Plugin: B2B Market für WooCommerce

B2B Market ist die erste deutschsprachige Lösung für B2B-Shops mit WooCommerce und WordPress. Verkaufe an B2B und an B2C, erfülle die gesetzlichen Anfor ...

Mehr erfahren

WooCommerce Projekte vorgestellt: Die Beer Ambassadors - Bierspezialitäten im Abo

Die Beer Ambassadors haben einen ganz besonderen Onlineshop auf die Beine gestellt - mit WooCommerce und German Market. Wir haben die beiden Gründer Thoma ...

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>