Newsgroup: it.comp.www.php
Titolo: here document

La sintassi degli here document è categoricamente qualcosa del tipo:
echo <<<END
picci pocci "picci pocci" pocci picci...
END;
Perché 3 <<< ?
ciao Mav 



Perchè no?
Tac
-- 
La netiquette prevde una sign di massimo quattro righe.
Ma la mia sign in quattro righe non ci stà.

Maverik ha scritto:

perche' 4 sono troppi e 2 sono pochi (cit.)

 ha scritto nel messaggio 
news:e9iut1$ao6$1...@area.cu.mi.it...

Va bene, lo so che la domanda è un po' stupida, ma davvero mi domandavo 
perché occorrono 3 parentesi angolari. Avrei pensato semmai un carattere di 
escape tipo \< onde evitare confusione con l'html.

"Maverik" <--> ha scritto nel messaggio 
news:44bcffb7$0$32143$4faf...@reader1.news.tin.it...


Tra l'altro su 
php.net
 non ho trovato nulla...

 Perché 3 <<< ?
< operatore di confronto (minore di...)
<< operatore di shift a sinistra
<<< operatore che apre un here-doc
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 <<< operatore che apre un here-doc
mi sfugge il secondo punto, potresti specificarlo meglio? che significa << ? 

> che significa << ?
Lo shift a sinistra.
Esempio:
2<<1 fa 4. Immagina la configurazione di bit di un numero intero; adesso 
shifta tutti i bit a sinsitra di 1 posto (<<1) e otterrai la nuova 
configurazione.
Lo shift esiste in tutti i maggiori linguaggi di programmazione (ereditato 
dal C).
rob4you 

"rob4you" <KIED...@KIEDIMELO.it> ha scritto nel messaggio 
news:_Z7vg.16547$I22...@tornado.fastwebnet.it...


"rob4you" <KIED...@KIEDIMELO.it> ha scritto

Innanzitutto chiedo scusa per i messaggi doppi. Ho un notebook che fa le 
bizze. Clicco su rispondi e non mi prende il comando, ci riclicco e mi invia 
il msg... (Outlook e Acer)
Ritornando al discorso mi rendo conto che sono molto ignorante.
So che un numero č composto da una sequenza di 8 bit, ma non ricordo piů 
neanche come si legge tale sequenza (lo feci anni fa ma adesso ho 
completamente rimosso...).
Shiftare immagino significhi spostare, ma continuo a non capire la 
spiegazione. Sicuramente non perché ti sei spigato male te ma perché sono io 
che ignoro l'argomento.
ciao Mav. 

 io che ignoro l'argomento.
Un numero non è composto da otto bit (credo in nessuna macchina, eccetto 
quelle a OTTO bit :-) )
Ad esempio, su un comune sistema (boh...prendi windows, versione a 32 bit), 
un intero è rappresentato da 32 bit (da ciò deduci che puoi memorizzare in 
un intero un numero senza segno grande al massimo 2^32).
Facciamo l'esempio del numero 8; la sua rappresentazione binaria è:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
(se non ho contato male, dovrei aver digitato 31 volte lo zero, e una volta 
l'uno).
Bene, se io shifto a sinistra di 2 posti, vuol dire che questa 
configurazione si sposterà a sinistra di 2 posti, e quindi il numero 
ottenuto sarà diverso:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
adesso il numero non vale più 2^3=8, bensì 2^5=32.
Analogamente puoi shiftare a destra.
Con lo stesso ragionamento, puoi shiftare a destra e a sinistra qualsiasi 
numero intero.
Piu chiaro ora?
rob4you 

 adesso il numero non vale piů 2^3=8, bensě 2^5=32.
Esattamente. In pratica, uno shift binario a sinistra equivale a
moltiplicare il numero per 2 (la base):
20<<1=20*2=40
20<<3=20*2*2*2=160
Se ci pensi, shiftare in base dicimale equivale a moltiplcare per 10:
5,50,500...
Ciao,
Carlo.


Perchè il gusto del limone del Lemonsoda è prodotto artificialmente
mentre Svelto lavapiatti contiene *vero* succo di limone?

 Piu chiaro ora?
Certo, adesso ho capito il significato di shiftare ed intuitivamente come 
vanno letti i numeri binari, ma è meglio che dia uno sguardo al 
funzionamento del sistema binario. So che è da ignorantoni non saperlo, 
quindi vi prego di non contorcervi troppo dinanzi a queste falle di sì 
grandi dimensioni. Mi rendo conto e non vi biasimo ;-)
E pensare che anni fa ho studiato al liceo scientifico, ma con il tempo ho 
proprio dimenticato, seppure avevo ripreso qualche anno fà l'argomento per 
la programmazione ma nuovamente non l'ho fissato in memoria.
thx for your explanations
Mav 

 5,50,500...
Bene, capito.
ciao Mav 

 una domanda: perché allora 2^32 mi viene un numero oltre 4 miliardi?
Scusa, hai ragione: 2^32=~4G: percio' un sistema operativo a 32 bit può
indirizzare fino a 4GB di ram, e una variabile (con segno) a 32 bit va da
circa -2 miliardi a +2 miliardi.
Ciao,
Carlo.

 Meglio che mi riveda il sistema binario...
Non e` difficile, e` come il decimale.
Parti da destra e eleva 2 alla posizione in cui sei (le posizioni
partono da 0). Per renderla semplice facciamo con 4 bit:
numero    : 0001
posizioni : 3210
Quindi prendi 2 e lo elevi alla 0 (perche` c'e` un 1 in corrispondenza),
che fa 1
Ora prendi 0100. Qui elevi 2 alla 2 (vedi schema sopra), che fa 4,
quindi 0100(binario) = 4(decimale)
1101 si traduce come 2^0 + 2^2 + 2^3 , cioe` 1+4+8 = 13
La formula precisa sarebbe 1*(2^0) + 0*(2^1) + 1*(2^2) + 1*(2^3), cosi`
come in decimale 3267 e` 7*(10^0) + 6*(10^1) + 2*(10^2) + 3*(10^3)
Ho messo le parentesi per chiarezza :)
Bye.
-- 
Alessandro Pellizzari

 ha scritto nel messaggio 
news:1153299986.6495.13.camel@alex...

Guarda, non so come ringraziarti, mi hai fatto una lezione sintetica che mi 
ha chiarito ogni dubbio. Grande! Mi hai anche evitato di cercare discussioni 
prolisse sull'argomento. 1000 volte grazie.
ciao Mav. 

Ciao Maverik,
sconsiglio l'utilizzo dell'heredoc, meglio un file_get_contents, un
include, non hai idea di come paga la separazione tra codice e dati
(anche se non sempre possibile).
Ti faccio un esempio un po' lungo ma illuminante:
abbiamo un sito monolingua con una cartellina piena di ritagli txt,
usiamo il file_get_contents (che a differenze dell'include non fa il
parsing  del contenuto) all'interno di una classe o in una funzione per
il caricamento.
Un bel giorno nasce la necessità di renderlo plurilingua, aggiungiamo
l'inglese e il cirillico!
Con gli heredocs si rendono necessari tonnellate di switch, di if,
cambiare codifica ai file php e giorni di lavoro.
Invece ci basta creare una cartellina per lingua contenente i ritagli
tradotti e aggiungere una variabile in un solo punto nel nostro codice:
$testo = file_get_contents($lingua . "testi/" . $file).
La variabile $lingua contiene il prefisso (it, ru, en) e le cartelline
si chiamano ittesti, rutesti, entesti.
dopo di che il sito plurilingue è finito.
Ti sembra poco? Aggiungi che hai il codice pulito pronto per il
prossimo sito!
Ciao.