DarkSlayer Skrevet 9. mars 2006 Del Skrevet 9. mars 2006 Noe jeg er usikker på. Når man overfører variabler i php, hva er det som går med referanse, og hva kopieres? Jeg trodde at alt gikk med referanse, men nå er jeg litt usikker. Det er jo uønskelig å lage store objekter som man sender til ulike funksjoner og andre objekter med copy-by-value. Og i samme gate så er jeg usikker på bruken av & tegnet. For i php så forstår jeg det som at man kun oppretter et alias til dataene. hmm litt forvirret Lenke til kommentar
DarkSlayer Skrevet 9. mars 2006 Forfatter Del Skrevet 9. mars 2006 Artikel om referanser i php4.3.0 fant noe interesangt faktisk... Lenke til kommentar
CruellaDeVille Skrevet 9. mars 2006 Del Skrevet 9. mars 2006 Og i samme gate så er jeg usikker på bruken av & tegnet. For i php så forstår jeg det som at man kun oppretter et alias til dataene. hmm 5725919[/snapback] &-tegnet i php brukes for å lage et alias på en variabel. hvis jeg sier at $ting = "Ting"; $tang = $ting; /* her er $ting og $tang to ulike variabel med forskjellige navn.*/ print $tang; $tull = $tang; /* Her er $tull, $ting og $tang tre forskjellige variabler */ $ting ="Tull"; $tang = &$ting; /* Her er $tang og $ting samme variabel. Hvis $ting oppdateres gjør $tang det også */ $ting ="Hello"; print $tang; /* Her er $tang blitt til "hello", ikke "Tull", slik det opprinnelig var. */ print $tull; &-tegnet brukes også til sende inn en variabel laget på utsiden av en funksjon, og da kan funksjonen endre verdien av denne variabelen. Hvis &-tegnet ikke brukes vil variabelen ikke bli oppdatert. Har laget et lite eksempel: <? /* * Variabel $a */ $a = 1; /* * Funksjon som bruker input $a og $b * Lager egentlig en kopi av $a * Denne funksjonen endrer IKKE variabelen $a */ function addWithoutReference($a, $b){ $a +=$b; } /* * Funksjon som bruker input &$a og $c * Siden $a sendes inn som "reference" endrer * funksjonen den "globale" variabelen $a */ function add(&$a, $c){ $a += $c; } print ("\$a med initiell verdi: ". $a. "<br />\n"); /* Skriver ut $a med initiell verdi: 1*/ addWithoutReference($a, 3); print ("Uten reference : \$a = ". $a. "<br />\n"); /* Skriver ut Uten reference : $a = 1 */ add($a, 3); print ("Med reference: \$a = ". $a); /* Skriver ut Med reference: $a = 4 */ ?> Lenke til kommentar
NH Skrevet 9. mars 2006 Del Skrevet 9. mars 2006 Dette er hovbedforskjellen mellom php4 og php5 OOP, php4 kopierer objekter by reference, mens php5 kopierer by value, Lenke til kommentar
Ernie Skrevet 9. mars 2006 Del Skrevet 9. mars 2006 Dette er hovbedforskjellen mellom php4 og php5 OOP, php4 kopierer objekter by reference, mens php5 kopierer by value, 5729380[/snapback] Får da for all del håpe det er motsatt. Å sende et objekt "by value" er idiotisk og tilnærmet ubrukelig for å si det mildt. Lenke til kommentar
NH Skrevet 10. mars 2006 Del Skrevet 10. mars 2006 haha, beklager. Skrev nok litt i søvne der. Det er motsatt (dobbeltsjekket det nettop) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå