PHP Debug Helper Funktionen

Wenn man keinen Debugger wie XDebug verwenden kann, ist das debuggen für oft mühsam.
Hier zwei Helferfunktionen, die ich als WordPress Programmierer oft verwende, um weniger tippen zu müssen für die lesbare Ausgabe von Daten.

Ausgabe von Arrays und Objekten im HTML Quelltext

Die erste Funktion dient der direkten gut lesbaren Ausgabe von Werten inklusive Arrays und Objekten im HTML Quelltext.

Arrays und Objekte werden in das pre-tag eingebunden um nicht in einer Zeichenwüste zu enden.

Booleans, also true und false werden erkannt und als entsprechender lesbarer String ausgegeben.

Der Rest, also Strings und Zahlenwerte werden ganz normal ausgegeben.

/**
 * Output arrays and objects in a readable way.
 *
 * @param mixed ...$val values of any type
 */
function pr(...$val) {
    $out = '';
    foreach ($val as $v) {
        if (is_array($v) || is_object($v)) {
            $out .= "<pre>".print_r($v, true)."</pre>";
        } elseif ($v === true) {
            $out .= '(bool)TRUE   ';
        } elseif ($v === false) {
            $out .= '(bool)FALSE   ';
        } else {
            $out .= $v.'   ';
        }
    }
    echo $out.'   <br>';
}

Ausgabe von Arrays und Objekten im PHP Error Log

Mit dieser Funktion kannst du dir mehrere verschiedene Datentypen in einem Funktionsaufruf recht übersichtlich in den PHP Error Log schreiben lassen. Die Funktion erkennt Arrays, Objekte und Boolsche Werte automatisch und gibt sie entsprechend aus.

/**
 * clever error_log() for multiple mixed values.
 *
 * @param mixed ...$val values of any type
 *
 * @example  el($myVar, $myArray, $myBoolValue);
 */
function el(...$val)
{
    $out = '';
    foreach ($val as $v) {
        if (is_array($v) || is_object($v)) {
            $out .= print_r($v, true);
        } elseif ($v === true) {
            $out .= '(bool)TRUE   ';
        } elseif ($v === false) {
            $out .= '(bool)FALSE   ';
        } else {
            $out .= $v.'   ';
        }
    }
    error_log($out);
}

Ausgabe von Arrays und Objekten aus PHP in der JS Debug Console

Besonders praktisch ist die Ausgabe von Variablen etc. in der JS Console im Browser. Wer es nicht weiß, die Console öffnet man in den meisten Browsern mit F12.
Ohne extra den error log öffnen zu müssen kannst du dir hier angenehm Parameter anzeigen lassen. Das funktioniert so, dass die Funktion JS Code in die Website schreibt, der wiederum die Daten in die Console überträgt.
Funktioniert allerdings nicht bei AJAX Calls.

/**
 * Output arrays and objects in the JS Console
 *
 * @param [type] $val
 */
if (!function_exists('cl')) {
    function cl(...$val)
    {
        $out = "console.log('";
        foreach ($val as $v) {
            if (is_array($v) || is_object($v)) {
                $out .= str_replace (array("\r\n", "\n", "\r"), ' ',  print_r($v, true));
            } elseif ($v === true) {
                $out .= '(bool)TRUE   ';
            } elseif ($v === false) {
                $out .= '(bool)FALSE   ';
            } else {
                $out .= $v.'   ';
            }
        }
        $out .= "');";
        echo $out;
    }
}