PHP debugging in der Javascript console

Eine Aufgabe die einem immer mal wieder über den weg läuft ist das man bei einem Fertigen Produkt, nachträglich etwas debuggen muss. Nun kann man nicht einfach an der Live Version herum doktern und irgendetwas ausgeben. Hier kann einem die JavaScript console helfen. Diese ist für den normalen Nutzern nicht sichtbar und somit wunderbar geeignet für diesen Job.  Hier mal ein kleines beispiel wie eine solche debug Klasse aus sehen könnte.

 

 

class DebugConsole {
    public static function debug($name, $var = null) {
        echo '<script type="text/javascript">'.PHP_EOL ;

        /// this is for IE and other browsers w/o console
        echo 'if (!window.console) console = {};';
        echo 'console.log = console.log || function(){};';
        /// end of IE    

        echo 'console.log("'.$name.'");'.PHP_EOL ;    

        if (!empty($var)) {
            if (is_object($var) || is_array($var)) {
                $object = json_encode($var);
                echo 'var object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = \''.str_replace("'","\'",$object).'\';'.PHP_EOL ;
                echo 'var val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = eval("(" + object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' + ")" );'.PHP_EOL ;
                echo 'console.log(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.PHP_EOL ;    

            } else {
                echo 'console.log("'.str_replace('"','\\"',$var).'");'.PHP_EOL ;
            }
        }
        echo '</script>'.PHP_EOL ;
    }
}