Auch wenn die XDebug-Extension den Output von var_dump() einigermaßen aufhübscht, kommt man doch um eine eigene Formatierung mittels „<pre>“ selten umher.
Bei großen und komplexen Datenstrukturen wie z.B. einer Klasse oder mehrfach verschachtelten Arrays wird die Ausgabe sehr schnell unübersichtlich.
Man ist dann schnell geneigt die Ausgabe auf das Wesentliche zu reduzieren, oder der Klasse eine eigene Dump-Methode zu spendieren, die nur die wesentlichen Informationen anzeigen soll.
Doch es geht auch einfacher!
Hier kommt Kint (http://github.com/raveren/kint) ins Spiel.
Mit Kint wird die Ausgabe übersichtlich strukturiert. JavaScript und CSS ermöglichen es zudem, das Ganze zunächst platzsparend anzuzeigen. Mit einem Klick auf die Ausgabe wird diese ausgeklappt und die Datenstruktur wird angezeigt.
Wer einen Debug-Output im Source-Code vergisst, und diesen auf den Live-Server deployed, gerät schnell in Hektik, diesen Fauxpas schnellst möglich zu korrigieren. Diese Zeiten sind vorbei!
Auch wenn Kint standardmäßig aktiviert ist, so kann die Ausgabe auf eine bestimmte IP-Adresse beschränkt werden:
1 2 |
Kint::enabled($_SERVER['REMOTE_ADDR'] === '192.168.0.2'); |
„Kint – a modern and powerful PHP debugging helper“
Neben der übersichtlicheren Debugging-Ausgabe, bringt Kint auch einige kleine Helfer mit.
Mit „ddd(<var>);“ wird z.B. das allseits geliebte/gehasste „var_dump(<var>); die();“ ersetzt.
Wem das originale hellblaue Theme nicht gefällt, kann auf eines der 4 anderen ausweichen, oder mittels CSS sein ganz individuelles Theme erschaffen.
Auch die standardmäßige Rekursionstiefe von 7 Ebenen kann angepasst werden.
Wer aufmerksam hingeschaut hat, dem ist auch aufgefallen, das die Angabe in $colorData einen Hex-Wert enthält. Hier stellt Kint zusätzliche Informationen zur Verfügung. Das funktioniert auch mit Zeitangaben wie z.B. durch die Funktion microtime().
Ich hoffe, dass ich dem ein oder anderen mit diesem Beitrag helfen konnte, etwas mehr Übersicht in die Debug-Ausgabe zu bringen.
Natürlich ersetzt Kint keinen vollwertigen Debugger einer IDE. Aber dafür ist er auch nicht angetreten.
Hier der komplette Quellcode, der die Debug-Ausgaben erzeugt hat:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
require_once 'kint/Kint.class.php'; // Kint::enabled($_SERVER['REMOTE_ADDR'] === '192.168.0.2'); class Base { /** * @var int */ protected $int = 0; /** * @var string */ protected $content = null; public function __construct( $int = 5 ) { $this->int = $int; } public function setContent( $content ) { $this->content = $content; } } $stringData = "Ich nutze Kint - ein besseres var_dump"; $intData = 911; $colorData = '#789'; $arrayData = array( 'schlussel' => 'inhalt', 'verschachtelt' => array( 'weitererSchlussel' => 'Gespeichert...', 'nochEinInhalt' => 4 ), 'ebeneEins' => 'Hier kommt noch was!' ); $jsonEncodedData = json_encode('{ "schlussel": "inhalt", "verschachtelt": [ "weitererSchlussel", "nochEinInhalt" ], "ebeneEins": "Hier kommt noch was!" }'); $jsonRawData = '{ "schlussel": "inhalt", "verschachtelt": [ "weitererSchlussel", "nochEinInhalt" ], "ebeneEins": "Hier kommt noch was!" }'; $objectData = new Base( 2 ); var_dump( $stringData ); var_dump( $intData ); var_dump( $colorData ); var_dump( $arrayData ); var_dump( json_decode($jsonEncodedData)); var_dump( json_decode($jsonRawData)); var_dump( $objectData ); d( $stringData ); d( $intData ); d( $colorData ); d( $arrayData ); d(json_decode($jsonEncodedData)); d(json_decode($jsonRawData)); d( $objectData ); $objectData->setContent('Mein Inhalt...'); ddd( $objectData); echo 'Wird nicht ausgeführt!!!'; |