Debug PHP: var_dump() leggibili con xdebug. Anche su MAMP

Fino a poco tempo fa il mio lavoro consisteva principalmente nel design e nella codifica di prototipi statici in HTML e CSS, quindi il mio confronto con PHP riguardava solo qualche piccolo, semplice include.
Da quando ho deciso di lavorare con WordPress le cose sono drasticamente cambiate e lavoro quotidianamente con un database MySQL…

var_dump()

Cosa fa il buon sviluppatore quando cerca capire il contenuto di una variabile? Come visualizza i dati richiamati dal database tramite una funzione?
Si affida a var_dump() o a print_r()!

Se pensiamo alla situazione:

$runner = array (
    "Anarch",
    "Criminal",
    "Shaper"
);

var_dump($runner) restituirà la stringa:

array(3) { [0]=> string(6) "Anarch" [1]=> string(8) "Criminal" [2]=> string(6) "Shaper" }

Purtroppo il risultato ottenuto è scarsamente leggibile (sarebbe simile con print_r()), soprattutto se si va al di la di variabili molto semplici; come fare allora per migliorare?

Basta circondare la funzione var_dump() o print_r() con il tag HTML <pre>, questo formatterà il testo, migliorandone la leggibilità.

array(3) {
  [0]=>
  string(6) "Anarch"
  [1]=>
  string(8) "Criminal"
  [2]=>
  string(6) "Shaper"
}

Tutto questo è molto utile ma implica il dover perdere tempo a scrivere tutte le volte quel dannato tag <pre> ed io sono pigro :) …

xdebug

… evidentemente non sono l’unico perché facendo qualche ricerca ho scovato xdebug (per inciso, la pagina di wikipedia dedicata al progetto è molto più chiara del sito vero e proprio) e faceva proprio al caso mio!

La procedura di installazione è piuttosto chiara ma io non ho avuto bisogno di eseguirla in quanto l’estensione è già presente in MAMP (se non lo usate dovreste veramente iniziare a farlo) pur essendo disattivata.

MAMP e php.ini

Siccome nella documentazione di xdebug c’è tutto quello che serve per installare l’estensione, voglio risparmiare qualche grattacapo a chi volesse attivarla in MAMP.
In realtà si tratta di una cosa veramente semplice, in quanto basta de-commentare una sola riga del file php.ini fornito all’installazione.

Do per scontato che MAMP sia già stato installato e configurato secondo le esigenze, in caso contrario ecco le istruzioni nel dettaglio.

Ora dobbiamo capire quale versione di PHP stiamo utilizzando, per saperlo basta aprire le Preferenze di MAMP e cercare la sezione PHP.

http://www.mamp.info/en/

Come trovare la versione di PHP usata in MAMP

Annotiamo la versione o teniamo la finestra aperta perchè ora dovremo avventurarci in una selva di cartelle.

Il file si troverà in MAMP > bin > php > php(numero di versione) > conf > php.ini

Posizione del file php.ini

Il file che ci interessa si chiama php.ini e si trova nella cartella con il numero di versione di PHP selezionato nel passaggio precedente

Trovato il nostro file dobbiamo aprirlo per modificarlo; come ho detto si tratterà di una modifica piccolissima ma qualcuno potrebbe preferire evitare di farla sul file originale, duplicando quindi php.ini per mantenerne una copia intatta di riserva.
Il mio editor preferito è Coda ma la modifica può essere fatta con Textwrangler o Text Edit senza problemi!

php.ini è un file davvero lungo, più di 1000 righe… quello che cerchiamo noi si trova praticamente in fondo; si tratta di due righe:

[xdebug]
;zend_extension="/Applications/MAMP/bin/php/php5.6.2/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"

il ; appena prima di zend_extension è la parte da eliminare, quindi dovremo avere:

[xdebug]
zend_extension="/Applications/MAMP/bin/php/php5.6.2/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"

Salviamo il file, chiudiamolo, spegniamo il server tramite il pannello di controllo di MAMP e riavviamo il tutto in modo che le modifiche vengano prese in considerazione.
Se tutto è stato eseguito correttamente il nostro debug ora dovrebbe essere formattato in modo leggibile, senza bisogno di scrivere alcun tag aggiuntivo oltre alla funzione var_dump()

Confronto var_dump() prima e dopo xdebug

Confronto sulla resa del var_dump() prima e dopo l’attivazione dell’estensione xdebug

In allegato un semplicissimo file php che mostra il funzionamento di quanto spiegato.

2 commenti su Debug PHP: var_dump() leggibili con xdebug. Anche su MAMP
Unisciti alla discussione!

  1. Il Daniele ha scritto:

    Interessante: nella prossima versione della guida inserisco le istruzioni per abilitare Xdebug. Ottimo lavoro!

    Rispondi a Daniele

Rispondi