Newsgroup: it.comp.www.php
Titolo: passaggio riferimenti ad una funzione

Se io passo ad una funzione come argomento un riferimento, è noto che il 
valore che assume tale riferimento all'interno della funzione si proietta 
direttamente sulla variabile originaria al di fuori della funzione. Ma 
questo rapporto è bidirezionale? Voglio dire, se nel codice successivo alla 
chiamata alla funzione, la stessa variabile referenziata subisce un 
cambiamento nel suo valore, tale valore cambia anche all'intero della 
funzione teoricamente?
ad esempio:
<?php
$string = "pippo";
nome($string);
echo "sono fuori dalla funzione: $string <br>";
function nome(&$nome_completo) {
echo "sono dentro la funzione: $nome_completo<br>";
$nome_completo .= " pippetti";
}
?>
"pippo" viene passato alla funzione come riferimento e non come valore, la 
funzione assegna un nuovo valore a $nome_completo e dunque, essendo esso 
linkato, lo stesso nuovo valore viene assegnato anche alla variabile 
originaria $string. Ipoteticamente, se, terminata l'esecuzione della 
funzione, $string assumesse un altro valore ancora diverso, ad esempio 
"pippola", dentro la funzione, teoricamente, $nome_completo avrebbe lo 
stesso valore, prima ancora che venga richiamata nuovamente e che le sia 
passato il nuovo valore?
Dico ipoteticamente e teoricamente perché, forse per mia inesperienza, forse 
perché non è proprio possibile farlo, non riesco a riprodurre una situazione 
analoga con un codice, situazione in cui lo script entra dentro la funzione, 
riesce e ne rientra senza passare esplicitamente il nuovo valore.
Insomma, spero qualcuno abbia capito cosa intendo dire, è un po' contorta la 
faccenda...
ciao Ethan 

> riesce e ne rientra senza passare esplicitamente il nuovo valore.
Ho scritto male: non "riesce" ma "esce", perché è una sola volta che esce 
dalla funzione. Bah, spero di non essere stato troppo  confusionario 
nell'esposizione.
Comunque riporto sotto il testo corretto:

ad esempio:


esce e ne rientra senza passare esplicitamente il nuovo valore.
ciao Ethan

 riesce e ne rientra senza passare esplicitamente il nuovo valore.
Nel fare questo non vedo altro scopo che un tentativo di sperimentare.
Ciò è buono ma stai andando verso una direzione che non porta a nulla di
concreto.
Tutto quello che c'è da sapere è che quando passi le variabili per
riferimento, poi ti ritroverai la variabile modificata dalla funzione.
Ciao
-- 
Stefano

 riferimento, poi ti ritroverai la variabile modificata dalla funzione.
Ciao Stefano,
č proprio cosě, quando studio una materia ho sempre l'interesse di volerla 
approfondire per capire tutti i possibili meccanismi.
La tua spiegazione si concilia esattamente con le mie conoscenze, ma volevo 
verificare se esistevano situazioni particolari in cui ciň poteva assumere 
un significato, ma evidentemente non č cosě, tanto meglio. Almeno adesso so 
che il funzionamento č quello e non c'č altro da sapere.
ciao Ethan 

 che il funzionamento è quello e non c'è altro da sapere.
Il funzionamento è quello per ciò che serve alla programmazione.
Quello che succede in memoria non lo possiamo sapere perché stiamo
programmando ad un livello di astrazione tale per cui noi dobbiamo
sapere che in quel momento, a quel tal indirizzo di memoria,
identificato dalla variabile x, c'è quel particolare valore.
Se poi, a un livello più basso, le cose non sono proprio così non lo
possiamo sapere perché entrano in gioco, appunto, altre 'entità' quali
il sistema operativo e i vari gestori.
-- 
Stefano

 il sistema operativo e i vari gestori.
Certo, ovvio. Se avessi voluto sapere cosa accade a più basso livello avrei 
aspirato a diventare un progettista, uno sviluppatore di linguaggi, ma non 
mi interessa. Come già detto, volevo escludere che esistessero applicazioni 
pratiche nel campo della programmazione in php.
ciao Ethan 

 dico per esperienza diretta. Ho 32 anni, non sono un bambino eh...
Ah beh, non le credo giuste neanche io.
Io voglio sapere sempre come funzionano le cose che uso, e questo non
solo nella programmazione dove diventa una cosa fondamentale per capire,
ma anche in altri ambienti dove voglio sapere solo per semplice
curiosità.
Tipicamente mi viene detto che andando avanti col chiedere come funziona
a un livello più basso, finirei con l'andare a vedere come si spostano
gli elettroni all'interno delle memorie del computer. Ovviamente si
tratta di un'esagerazione da parte di chi mi 'rimprovera' bonariamente
ma serve a farmi comprendere che a 'un certo punto' bisogna fermarsi e
iniziare ad usare quello che si ha.
La differenza è che normalmente il mio 'certo punto' è diverso dal loro.
:-)
Ah, io di anni ne ho 36 ma con 'più grandi' mi riferivo all'esperienza.
Ne ho trovati di pischelli che hanno da insegnarmi... :-)
Andiamo a dormire va, che è pure ferragosto e dovremmo essere altrove
(non che stia lavorando comunque).
Ciao
-- 
Stefano

 (non che stia lavorando comunque).
Sì, infatti, bel ferragosto che passerò... mi sono lasciato oggi dalla girl. 
Non aggiungo altro...
ciao
Ethan