PHP – Metodi alternativi per il debug in PHP

PHP
fonte: dal web

Piccoli trucchi per chi non ha a disposizione un vero debugger come XDebug o Zend Debugger. In mancanza di un debugger degno di questo nome può essere difficoltoso, soprattutto in contesto PHP, trovare un bug o analizzare i dati contenuti nel flusso di elaborazione  per capire quale sia il problema o il motivo per cui si presenta un risultato che non ci aspettiamo.

In alcuni casi utilizzare la stampa a video dell’errore può non essere possibile o assolutamente da evitare, ad esempio nel caso in un contesto di produzione. In queste situazioni possiamo sfruttare un semplice sistema di logging, ovvero riportare in un file di testo gli errori generati dall’applicazione o altre informazioni importanti che chiaramente non vogliamo rendere pubbliche. Oltre alla stampa semplice dell’errore però, nella maggior parte dei casi, abbiamo anche bisogno di utilizzare le funzioni di ispezione come “var_dump” o “print_r” , che ci facilitano l’analisi. Il problema è che le informazioni restituite da queste funzioni sono strutturare in modo complesso, e dunque non è così immediata la stampa su file.

Per risolvere il problema possiamo utilizzare l’output buffering di PHP:

[php]
ob_start();
$articoli = array( "id" => 123456, "title" => "This is a test" )
var_dump($articoli);
$result = ob_get_clean();
[/php]

Attivando l’output buffering si devia l’output dello script, che invece di essere inviato al client viene memorizzato in un buffer interno. A questo punto possiamo utilizzare la funzione “ob_get_clean()” per recuperare il contenuto del buffer interno e cancellare quest’ultimo.

Il risultato finale è che nella variabile “$result” abbiamo esattamente l’output complesso di “var_dump” ma in formato stampabile, ovvero in formato stringa. A questo punto scrivere “$result” su un file di logging ed ottenere così un debug più semplice e veloce è un gioco da ragazzi!