l'heredoc è una pratica molto comune ed è usata, generalmente, in sostituzione agli apici doppi in quanto permette, come per gli apici doppi, di inserire variabili.
Visto che siamo in tema di heredoc e query ... dico la mia :P
Generalmente quando scrivo delle query, personalmente, utilizzo i normali apici doppi perché l'heredoc non permette l'uso di concatenazioni di stringhe e quindi di operatori ternari! Per fare la stessa cosa con l'heredoc dovrei usare degli if rendendo praticamente illeggibile la query.
Per intenderci, se devi costruire una query che varia in base a delle specifiche condizioni devi interrompere l'heredoc, fare un if, scrivere il codice della query, possibilmente/probabilmente dentro un altro heredoc ed infine fare ripartire l'heredoc della query creando non poca confusione.
Tutta questa trafila per ogni condizione che ti modifica strutturalmente la query.
Un esempio di una query con un operatore ternario nel mezzo può essere ad esempio:
Questa query, come puoi vedere tu stesso, è perfettamente leggibile e comprensibile anche se varia dinamicamente ... scritto cosi, non da minimamente fastidio alla leggibilità! Se si dovesse usare un heredoc la query dovrebbe essere tagliata più volte nel mezzocodice:$query = " SELECT t2.* FROM tabella1 AS t1 INNER JOIN tabella2 AS t2 ON ( t2.tabella2_tabella1_id = t1.tabella1_id" . ($t2SoloConfermati == true ? " AND t2.confermati = 'Si'" : '') . " ) WHERE t1.eliminati = 'No'" . ($t1SoloConfermati == true ? " AND t1.confermati = 'Si'" : '');
Quindi il mio consiglio è di non usare l'heredoc per le query![]()


Rispondi quotando