Degeim Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 På toppen av et php-dokument deklarerer jeg en variabel slik: $variabel='tekst'; Og det virker jo fint. Helt til den skal brukes i en selvlaget funksjon (eksempel): function funksjon(){ return $variabel; } Da får jeg at den ikke er deklarert. Så hvordan kan jeg deklarere en variabel slik at alle funksjoner i hele dokumentet kan få tak i den? Takk, Degeim Lenke til kommentar
Gjest Slettet+142 Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 (endret) du kan jo se om define() e noe for deg... PHP <? define("variabel", "tekst"); define("VARIABEL", "TEKST"); echo variabel; // skriver ut "tekst" echo VARIABEL; // skriver ut "TEKST" ?> du kan og legge til et parameter til, hvis du vil at den ikke skal skille mellom store/små bokstaver når du kaller den.. PHP <? define("vArIaBEL", "tekst", true); echo variabel; //skriver "tekst" echo vArIaBEL; //skriver "tekst" echo VARIABEL; //skriver "tekst" ?> tror isåfall at dette skal virke som eg sier Endret 5. oktober 2006 av Slettet+142 Lenke til kommentar
Ernie Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 Tror nok global er en fin ting her Lenke til kommentar
endrebjo Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 (endret) PHP <?php $variabel = 'tekst'; function test() { global $variabel; // Gjør det mulig å bruke $variabel i funksjonen return $variabel; } test(); ?> eller PHP <?php $variabel = 'tekst'; function test() { return $GLOBALS['variabel']; } test(); ?> Les mer her. Edit: Litt sein. Edit2: Ehh...limte inn feil på nr. 2 ja. Endret 5. oktober 2006 av endrebjorsvik Lenke til kommentar
Degeim Skrevet 5. oktober 2006 Forfatter Del Skrevet 5. oktober 2006 Vel, takk for svarene. Jeg skal prøve litt, og se om define eller global er best for meg. Men endrebjorsvik, jeg kan ikke si jeg ser noen forskjell mellom eksemplene dine... Er det bare jeg som overser noe, eller er det du som har oversett noe? Degiem Lenke til kommentar
endrebjo Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 Men endrebjorsvik, jeg kan ikke si jeg ser noen forskjell mellom eksemplene dine... Er det bare jeg som overser noe, eller er det du som har oversett noe? 7005425[/snapback] Rettet nå. Lenke til kommentar
Peter Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 Bortsett fra at global så og si aldri er en fin ting, den har et krav som er vanskelig å påtvinge. define kan være greit, da den ihvertfall antyder at den er konstant, men beste løsning er å sende med en variabel til funksjonen, mener nå jeg. Lenke til kommentar
Degeim Skrevet 5. oktober 2006 Forfatter Del Skrevet 5. oktober 2006 Jeg sender variablene til funksjonene til vanlig, men akkurat denne variabelen (eller konstanten, som den er) gidder jeg ikke definere hver gang jeg trenger den, og heller ikke bruke "verdifull" plass på å sende den videre til hver eneste funksjon. Derfor har jeg funnet ut at define ser ut til å være best. Takk for all hjelp! Lenke til kommentar
Ernie Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 Bortsett fra at global så og si aldri er en fin ting, den har et krav som er vanskelig å påtvinge.define kan være greit, da den ihvertfall antyder at den er konstant, men beste løsning er å sende med en variabel til funksjonen, mener nå jeg. 7005875[/snapback] Hvorfor det? PHP er vel det hittil eneste programmeringsspråket jeg har vært innom hvor globale variabler ikke automatisk er en del av funksjoner, klasser etc. noe jeg synes er til tider meget problematisk. Er det liksom en oppfordring til å ha ørten parametere i funksjonene? Skal alle klasser definere en variabel internt som settes lik en "global" variabel man får inn i konstruktor? Hva skal man egentlig med globale variabler hvis man ikke kan hente de uhemmet inn i funksjoner, klasser etc.? Lenke til kommentar
Peter Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 Hva skjer når du flytter funksjonen din over til et nytt prosjekt, som kanskje ikke har den helt store sammenhengen med det prosjektet der du skrev funksjonen? Plutselig definerer den ikke de samme globale variablene, må du plutselig skrive om funksjonen da? Jeg liker ihvertfall å skrive kode som er så uavhengig som mulig, hva andre foretrekker er jo selvsagt en smakssak, men etter min mening er globale variable en unøvendighet. Så svaret er "ja", alle klasser som har behov for en global variabel og bruker denne i flere metoder, burde kreve denne i konstruktøren og sette den internt. Dermed elimineres behovet for den globale variabelen. (Muligens litt knotete forklart, men resultatet er at du ikke har en global variabel, men en variabel som sendes via flere ledd) Lenke til kommentar
Ernie Skrevet 5. oktober 2006 Del Skrevet 5. oktober 2006 (endret) Vel, det er klart det er en fordel hvis funksjonene skal flyte rundt mellom flere prosjekter, men som regel koder man gjerne helst mot det ene prosjektet. Å ha ørten parametere i funksjoner er langt fra bra etter min mening. Man mister liksom veldig lett oversikten, og det ikke optimalt det heller. Mange parametere gjør at det blir veldig mye som må skrives hver gang funksjonen skal brukes, og det er unødvendig hvis enkelte parametere alltid har samme verdi. Da synes jeg at man faktisk bør holde seg til globale variabler. For ordensskyld kan man jo skrive øverst hvilke man bruker (i PHP er jo det lett siden man MÅ bruke global ... ; ) En liten ting man kan merke seg er at funksjoner ikke er objekter eller uavhengige. Hvorfor skal man da tenke på de som det? Endret 5. oktober 2006 av Ernie 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å