Thomas. Skrevet 18. juli 2010 Del Skrevet 18. juli 2010 Utenfor klassen (før) så definerer jeg noen $bruker arrays. Jeg lurer på hvordan jeg skal kunne bruke verdiene til disse i en funksjon i en klasse? Har da dette til nå: <?php $bruker['var1'] = 'Hei'; $bruker['var2'] = 'Hallo'; class C { public function __construct($var) { $bruker = $var['Bruker']; } public function SF() { echo var_dump($bruker['var1']); } } $vars = array('Bruker' => $bruker); $val = new C($vars); echo $val->SF(); ?> Dette printer ut NULL. Lenke til kommentar
Jonas Skrevet 18. juli 2010 Del Skrevet 18. juli 2010 Les litt om variable scope og attributes, så er jeg sikker på at du ser feilen. Lenke til kommentar
BlueEAGLE Skrevet 18. juli 2010 Del Skrevet 18. juli 2010 <?php $bruker['var1'] = 'Hei'; $bruker['var2'] = 'Hallo'; class C { private $bruker = array(); public function __construct($var) { $this->bruker = $var['Bruker']; } public function SF() { echo var_dump($this->bruker[]); } } $vars = array('Bruker' => $bruker); $val = new C($vars); $val->SF(); ?> Som du ser så må du referere til klassevariablen med $this->VARIABELNAVN (OBS: IKKE bruk $this->$variabelnavn fordi det er noe annet igjen). Det er en god ide å begrense synligheten til klassevariabler der det er hensiktsmessig for å unngå at en variabel plutselig har en annen verdi enn det du trodde den skulle ha eller hvis en endring av en verdi ikke skal skje uten at noe annet også skjer. Hvis du da har en privat variabel og en synlig metode som endrer verdien samtidig som den gjør noe annet så er biffen sagt (eller hva nå det uttrykket var). Lenke til kommentar
Thomas. Skrevet 18. juli 2010 Forfatter Del Skrevet 18. juli 2010 Takk. Da er problemet løst Les litt om variable scope og attributes, så er jeg sikker på at du ser feilen. Hvorfor kan jeg ikke sette global i __construct 1 gang? Så man slipper sette det i hver funksjon? Lenke til kommentar
BlueEAGLE Skrevet 19. juli 2010 Del Skrevet 19. juli 2010 Globale variabler fjerner større deler av poenget ved objektorientert programmering. Med andre ord; det kan være at du tror du vil bruke globale variabler til å løse et problem, men egentlig så er det ikke det du vil. Lenke til kommentar
Thomas. Skrevet 20. juli 2010 Forfatter Del Skrevet 20. juli 2010 Globale variabler fjerner større deler av poenget ved objektorientert programmering. Med andre ord; det kan være at du tror du vil bruke globale variabler til å løse et problem, men egentlig så er det ikke det du vil. Jepp bruker løsningen du foreslo:thumbup: 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å