Newsgroup: it.comp.www.php
Titolo: abuso di EOF

Tempo fa analizzando uno script altrui ho visto un modo originale 
(almeno per me) di assegare ad una stringa valori piuttosto lunghi su 
piu' righe, abusando mi pare di EOF. In sostanza:
$myvar = <<<EOF
metti
   quello
     che ti pare
EOF; /* fine, non sono ammessi spazi o tabs prima di EOF */
o in pratica:
function q_profileGroups($wClause ="")
{
   $query =<<<EOF
    SELECT
      `target_grp`.`ID` AS `ID_grp`,
      `target`.`ID` AS `ID_tgt`,
      CONCAT(`target_grp`.`tgrp_des`,' --> ', `target`.`tar_des`) AS des
    FROM
      `target_grp`
      INNER JOIN `target` ON (`target_grp`.`ID` = `target`.`tar_grp`)
    /* where clause placeholder */
    %1\$s
    ORDER BY
      `target_grp`.`tgrp_des`,
      `target`.`tar_des`
EOF;
   return sprintf($query, "$wClause");
}
Mi torna molto comodo in particolare per scrivere query unpo' complesse, 
  correttamente formattate ben leggibilio e che soprattutto in questo 
modo si possono copiare ed incollare a scopo di test in altro ambiente 
senza problemi ed evitando lunghe concatenazioni di stringhe. Inoltre la 
concatenazione di stringhe rappresenta comunque un bel lavoro per 
l'interprete.
La domanda e': controindicazioni??

 piu' righe, abusando mi pare di EOF.
Il costrutto utilizzato non e' EOF bensi' "<<<" ossia Heredoc:
http://url.repository.biz/go/P
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1


Another way to delimit strings is by using heredoc syntax ("<<<"). One
should provide an identifier after <<<, then the string, and then the same
identifier to close the quotation
<<<SESSO
Questa è una stringa valida
SESSO;

 piu' righe, abusando mi pare di EOF.
La modalità per creare string senza " è comoda è si chiama sintassi heredoc
(così come ti ha postato Setec).
Non far caso a EOF, puoi usare qualsiasi stringa, purchè tu la chiuda... (in
questo caso non badare a cosa ha scritto Setec :-P eheheh)
quindi quell' EOF che vedi è solo una parola qualsiasi, e non la parola
chiave End Of File (che se non ricordo male non esiste come costante in Php)
quindi nessun abuso... al massimo una 'cattiva' scrittura che confonde le
idee.
io preferisco
<<<SESSO
Farne tanto è un sogno
SESSO;
eheheh
Ciao
J

> Il costrutto utilizzato non e' EOF bensi' "<<<" ossia Heredoc:
ma li mortacci...! ;-)
Non capivo come funzionasse. Credetemi sono un mangiadocumentazione, 
ricordo che provai su 
php.net
 a fare una ricerca con <<< e <<<eof ma 
senza risultati, ne' nell'help chm, ma e' un dato di fatto che google 
ignori i "caratteri speciali". Cercai in tutti i modi, meno nel posto 
giusto.
Ora vedo, grazie per la segnazione, che heredoc e' nella descrizione del 
tipo stringa.
Ottimo 2004, ho gia' imparato qualcosa di nuovo... ad esempio a non 
usare EOF per heredoc, troppo ambiguo!
Per la cronaca, cosi' vi fate altre quattro risate, la prima volta che 
ho provato a delimitare una striga in quel modo sono andato al 
manicomio: errore qualche linea piu' in giu' dentro una funzione che 
prima funzionava perfettamente.
Ce ne ho messo per capire che la mia mania di indentare mi aveva spinto 
istintivamente il delimitatore di fine stringa fuori dal primo carattere!

 chiave End Of File (che se non ricordo male non esiste come costante in Php)
Infatti ricordi bene, ma nella mia mente esiste in varie forme, primo in 
delphi, poi in AdoDB e poi... insomma istintivamente esisteva!


Si anche io per queste cose devo controllare.... ne ho talmente tanti in
mente (compresi EOT etc etc vedi tabelle ascii) che si fa casino:-D
J