Gå til innhold

php - er ikke variabler globale?


Anbefalte innlegg

kom over et merkelig problem, alltid trodd at variabler var globale i php og kunne refereres til fra en funksjon.

må man virkelig bruke define for å definere noe for bruk i en funksjon?

 

<?php
define("LANG", "SUPER");
$lang = "SUPER";

function write() {
echo LANG."FETT HÅR<br>"; // SUPERFETT HÅR
echo $lang."FETT HÅR"; // FETT HÅR
}
write();
?>

Lenke til kommentar
Videoannonse
Annonse

Du kan definere globale variabler slik:

 

<?php
global $lang;
$lang = "SUPER";

function write() {
global $lang;
echo $lang."FETT HÅR<br>"; // SUPERFETT HÅR
}
write();
?>

 

Eller globale variabler i en klasse slik

 

<?php
class minKlasse {
private $lang = "SUPER";

function write() {
echo $this->lang."FETT HÅR<br>"; // SUPERFETT HÅR
}
}
$minKlasse = new minKlasse();
$minKlasse->write();
?>

Lenke til kommentar

En av hovedgrunnene til at man bruker funksjoner er jo at man holder kodedelene adskilt og unngår tilfeller der $variabelnavn i en funksjon ved et uhell overskriver $variabelnavn i en annen del av programmet.

 

Den riktige(ste) måten å sende verdier mellom funksjoner og hoveddel av programmet er ved å bruke argumenter:

 function write($tekst)
 {
   echo $tekst."FETT HÅR!";
 }
 write('SUPER');

Lenke til kommentar

En av hovedgrunnene til at man bruker funksjoner er jo at man holder kodedelene adskilt og unngår tilfeller der $variabelnavn i en funksjon ved et uhell overskriver $variabelnavn i en annen del av programmet.

 

Den riktige(ste) måten å sende verdier mellom funksjoner og hoveddel av programmet er ved å bruke argumenter:

 function write($tekst)
 {
   echo $tekst."FETT HÅR!";
 }
 write('SUPER');

 

Men det var vel ikke dette som var spørsmålet?

 

Uansett, en global variabel vil aldri tilfeldigvis bli overskrevet inne i en funksjon da den må hentes inn med "global $variabelnavn".

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...