Come eseguire il debug passo-passo del codice PHP con Xdebug e PhpStorm su una configurazione DDEV
Cos'è il debug?
Per Wikipedia: “Nella programmazione informatica e nello sviluppo software, il debug è il processo di individuazione e risoluzione di bug (difetti o problemi che impediscono il corretto funzionamento) all'interno di programmi informatici, software o sistemi.”
Per Internet: “Il debug è come essere il detective in un film poliziesco in cui sei anche l'assassino.” – Filipe Fortes
Cos'è DDEV?
DDEV è uno strumento open source che consente di configurare rapidamente siti locali utilizzando Docker. E non è necessario conoscere molto Docker per poterlo utilizzare, basta averlo installato. Un elenco di comandi per ottenere DDEV e un progetto WordPress o Drupal funzionante è disponibile su ttps://davidloor.com/2021/12/22/how-to-setup-a-wordpress-and-drupal-local-site-with-ddev/
Cos'è Xdebug?
Xdebug, secondo il sito ufficiale, “è un'estensione per PHP e fornisce una serie di funzionalità per migliorare l'esperienza di sviluppo PHP”.
Una delle funzionalità fornite da Xdebug è il debug passo-passo, in cui Xdebug interagisce con un IDE utilizzando il protocollo DBGp. PhpStorm, Sublime, Netbeans, Visual Studio Code e altri IDE noti lo supportano. Con il debug passo-passo, i programmatori sono in grado di impostare punti di interruzione in qualsiasi riga di uno script PHP, dove desiderano interrompere la sua esecuzione per poter vedere lo stato e il comportamento del programma in quel punto specifico.
Perché dovremmo preoccuparci di usare uno strumento come xDebug quando abbiamo funzioni come error_log, print_r, var_dump e altre simili che tutti abbiamo usato molto? Perché xDebug ti renderà un programmatore e un risolutore di bug molto più veloce.
Supponiamo che tu debba eseguire il debug di un file PHP, dove sei quasi sicuro che ci sia un bug, in base ai log degli errori del server, usando solo funzioni come error_log, print_r. Dovrai iniziare a chiamare queste funzioni, passando le variabili che vuoi visualizzare, e aggiornare la pagina nel browser per controllare l'output, e se le variabili non ti danno le informazioni necessarie per risolvere il problema, dovrai ripetere il processo con un set diverso di variabili finché non otterrai le informazioni che potrebbero essere utili per correggere il bug. E, come sappiamo, questo processo richiede tempo.
Per eseguire il debug dello stesso bug ipotetico di cui sopra, in uno script PHP, utilizzando xdebug, dovrai impostare il punto di interruzione nelle righe in cui desideri vedere lo stato del programma e aggiornare il browser. Sarai in grado di vedere tutte le variabili nello scope durante la richiesta, come puoi vedere nello screenshot seguente, in una sola interazione.

Installare e abilitare xDebug
- Xdebug è già installato quando si utilizza DDEV.
- Per abilitare Xdebug sul progetto DDEV, nel terminale, esegui semplicemente ddev xdebug on
- dovresti ottenere Enabled xdebug come output
Iniziare ad ascoltare le connessioni di debug PHP in PhpStorm
- Apri il tuo progetto PHP in PhpStorm
- Nell'angolo in alto a destra di PhpStorm, troverai un piccolo pulsante a forma di telefono, fai clic su di esso per iniziare ad ascoltare le connessioni di debug PHP.

- Apri il tuo sito locale in un browser e in PhpStorm ti verrà chiesto di accettare la connessione in arrivo da Xdebug, dove dovresti fare clic su Accetta.

Considerazioni finali
Xdebug è solo un altro strumento che può essere utilizzato per trovare e risolvere bug nel codice PHP. Può aiutare ad aumentare la produttività di uno sviluppatore PHP in molti casi.
PhpStorm è anche un altro strumento, che ha ottime funzionalità per lo sviluppo PHP. Ho iniziato a usarlo 2 anni fa dopo aver sentito tutti i vantaggi che forniva ai miei colleghi. Per più di 13 anni, sono stato un grande fan di Apache Netbeans, che funziona benissimo anche con Xdebug, ma erano necessari alcuni passaggi aggiuntivi per farlo funzionare completamente, e utilizzava troppe risorse dal mio computer che diventava super lento.
Dovremmo ricordare che “Sei bravo solo quanto gli strumenti che usi.”