Thomas. Skrevet 18. juli 2010 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.
Jonas Skrevet 18. juli 2010 Skrevet 18. juli 2010 Les litt om variable scope og attributes, så er jeg sikker på at du ser feilen.
BlueEAGLE Skrevet 18. juli 2010 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).
Thomas. Skrevet 18. juli 2010 Forfatter 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?
BlueEAGLE Skrevet 19. juli 2010 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.
Thomas. Skrevet 20. juli 2010 Forfatter 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:
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å