PDA

View Full Version : Php


Linux&Xunil
11-02-2002, 16:18
Sto studiando l ambito delle variabili in PHP.
Le vriabili globali dichiarate nelgli script non sono accessibili alle funzioni.
Le funzioni usano variabili con ambito locale.
Ora per mettere a disposizione i valori delle variabili dello script all interno delle funzioni le posso mettere come argomento della funzione( che userà i valori di quelle variabili , senza modificare le originali)
Se invece voglio importare la variabile all interno della funzione posso usare due modi.
E qui nasce la mia domanda.
O rendo globale la variabile nella funzione , oppure passo la variable per "&" riferimento nell argmento della funzione.
Ho provato in tutti e due i modi , e non ho notato differenze tra queste due tecniche.
In entrambi casi la variabile originale viene usata con il suo valore originale e viene realmente modificata dalla funzione.
Che differeze ci sono tra queste due tecniche ?

Linux&Xunil
12-02-2002, 10:05
Nessuna?

Hell-VoyAgeR
12-02-2002, 13:34
qualche differenza c'e', a me piace piu' il by reference (meno possibilita' di errori con variabili dichiarate piu' volte)

cmq in questo momento mi sto cimentando con delphi+mysql e devo dire che si fanno delle cosine veramente egregie!

:D

Linux&Xunil
12-02-2002, 16:35
Originariamente inviato da Hell-VoyAgeR
[B]qualche differenza c'e', a me piace piu' il by reference (meno possibilita' di errori con variabili dichiarate piu' volte)

cmq in questo momento mi sto cimentando con delphi+mysql e devo dire che si fanno delle cosine veramente egregie!

:D
..qualche..QUALI?:D

Hell-VoyAgeR
12-02-2002, 21:07
intendevo differenze NON operative, da qualche parte avevo anche un doc che spiegava in quali occasioni usare un metodo o l'altro... se lo ritrovo posto il link (o lo metto cmq a disposizione)

dal punto di vista dell'utilizzo della memoria non dovrebbe cambiare assolutamente nulla

spero di poterti essere piu' utile a breve !

_V_

Linux&Xunil
13-02-2002, 06:40
Grazie!

Hell-VoyAgeR
13-02-2002, 08:39
eh... sarebbe un piacere... se riuscissi a ritrovarlo... damn...
sto diventando proprio vecchio :D :D :D

pjtaddei
13-02-2002, 09:45
concettualmente passare un reference implica passare l'indirizzo della cella di memoria dove risiede la variabile (pointer) mentre la variabile globale viene richiamata di per se

dunque all'interno della funzione il reference è trattato come puntatore a un oggetto mentre la variabile globale come variabile del tipo che rappresenta

..almeno spero!!!

cionci
13-02-2002, 11:59
Questo è in pratica quello che avviene in ogni linguaggio di programmazione che supporta il apssaggio di variabili per riferimento...

In pratica alla funzione viene passato solamente l'indirizzo della variabile da utilizzare...

In genere passare variabli complesse (ad esempio, vettori, strutture, classi) per riferimento è molto più performante che passarle per valore (altrimenti i dati devono essere copiati dall'ambiente chiamante all'ambiente locale)...

La soluzione "variabile globale" è sicuramente + sporca, ma è anche quella in definitiva + efficiente per l'uso delle risorse...soprattutto nel caso di molte chiamate di funzioni annidate...

Linux&Xunil
13-02-2002, 12:03
Originariamente inviato da cionci
[B]Questo è in pratica quello che avviene in ogni linguaggio di programmazione che supporta il apssaggio di variabili per riferimento...

In pratica alla funzione viene passato solamente l'indirizzo della variabile da utilizzare...

In genere passare variabli complesse (ad esempio, vettori, strutture, classi) per riferimento è molto più performante che passarle per valore (altrimenti i dati devono essere copiati dall'ambiente chiamante all'ambiente locale)...

La soluzione "variabile globale" è sicuramente + sporca, ma è anche quella in definitiva + efficiente per l'uso delle risorse...soprattutto nel caso di molte chiamate di funzioni annidate...
Grazie;)