/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Tomme variabler, korrekt måde at håndtere ~
Fra : Stig Sørensen


Dato : 03-11-08 14:31

Hej gruppe..

Et spørgsmål der har gået mig på et stykke, håber jeg nu at få svar
på.
På min egen Arch Linux server (Apache + PHP5) gives der Notice
meddelelser ved tomme variabler, feks:


if(isset($_GET['speak'])) {
   $message = "Hello..";
}

echo $message;


Lad os antage url'en er: index.php?speak

Dette vil give: "Hello.."

Hvis url'en blot er index.php

Vil fejlen forekomme:

Notice: Undefined variable: message in...


Hvordan håndtere man korrekt dette? Ved at definere de tomme
variabler?
Feks: if(empty($message)) { $message = ""; } ?


Eller er det min server opsætning der skal ændres? Ved ikke om det er
standard at Notice bliver vist?


Håber I forstår.

 
 
MooreHojer (03-11-2008)
Kommentar
Fra : MooreHojer


Dato : 03-11-08 23:09

> Hvordan håndtere man korrekt dette? Ved at definere de tomme
> variabler?
> Feks: if(empty($message)) { $message = ""; } ?

Jeg plejer at løse den ved enten at erklære variablen $message lige før if-sætningen eller i en else-del til if-sætningen. I begge tilfælde sætter jeg $message til "", på den måde vil variablen være sat når du kommer til din echo.

> Eller er det min server opsætning der skal ændres? Ved ikke om det er
> standard at Notice bliver vist?

Hvis du har adgang til php.ini kan du sætte error_reporting til det ønskede niveau. Ved at sætte niveauet lavt nok/slå det fra vil du kunne undgå at den brokker sig.

En god tommelfingerregel er dog at man på udviklingstidspunktet sætter niveauet så _højt_ som muligt. På den måde vil alle "fejl" og advarsler blive fundet og din kode vil derfor nemmere kunne flyttes til en anden maskine senere som måske har en anden indstilling. Sætter man niveauet for lavt på udviklingstidspunktet risikerer man at der er fejl som den ikke orienterer om, og når man så tror man er færdig og flytter koden til en anden server risikerer man at de har sat niveauet lidt højere g pludselig dukker der Notice frem på ens sider, eller i værste fald, vil siden slet ikke blive vist, men kun en fejlmeddelelse...

--
MooreHojer

Bertel Lund Hansen (03-11-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-11-08 23:32

Stig Sørensen skrev:

> Notice: Undefined variable: message in...

> Hvordan håndtere man korrekt dette?

MooreHojer har svaret. Jeg vil blot tilføje at der findes
programmeringssprog hvor man ikke kan opsætte sig ud af at få den
fejl. Det er derfor en god vane altid at initialisere sine
variable.

> Ved at definere de tomme variabler?

Ja. Den metode er skudsikker og som sagt en god vane.

> Feks: if(empty($message)) { $message = ""; } ?

Der er to måder:

   message='';
   if (isset($_GET['speak'])) $message = 'Hello..';
   echo $message;

eller
   if (isset($_GET['speak'])) $message = 'Hello..';
   else $message = '';
   echo $message;

Den sidste metode er lidt bedre, fordi den kun sætter værdien én
gang.

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

MooreHojer (03-11-2008)
Kommentar
Fra : MooreHojer


Dato : 03-11-08 23:46

> Den sidste metode er lidt bedre, fordi den kun sætter værdien én
> gang.

Mange vil også mene at det er den der er mest "læservenlig" i og med at der klart fremgår "hvorfor" at den sætte til en tom.

--
MooreHojer

Jonathan Stein (04-11-2008)
Kommentar
Fra : Jonathan Stein


Dato : 04-11-08 17:14

Bertel Lund Hansen skrev:

> Der er to måder:

Der er tre (eller flere...):

$message = isset($_GET['speak']) ? 'Hello..' : '';

Når man om et år vender tilbage til koden, er det meget nemt at se, at
$message med sikkerhed har en værdi efter denne linje.

M.v.h.

Jonathan

--
Er din email vigtig? Er du træt af, at din hjemmeside er nede?
Stabilt webhotel på redundant setup med daglig backup.
POP3, IMAP, PHP, JSP, Java, Perl, Python, Telnet, SSH, Cron-jobs m.v.
http://www.jsp-hotel.dk/

Bertel Lund Hansen (04-11-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 04-11-08 21:12

Jonathan Stein skrev:

> Der er tre (eller flere...):

Det har du da ret i.

> $message = isset($_GET['speak']) ? 'Hello..' : '';

Den kender jeg godt, men jeg bruger den sjældent.

> Når man om et år vender tilbage til koden, er det meget nemt at se, at
> $message med sikkerhed har en værdi efter denne linje.

Det er en fordel ved metoden som jeg ikke før har overvejet.

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

Stig Sørensen (04-11-2008)
Kommentar
Fra : Stig Sørensen


Dato : 04-11-08 06:57

Tak til Jer alle.

Det bekræftede blot at jeg gør tingene 'korrekt nok' hvad angår de
tomme variabler der skal defineres


Forsat god dag til alle.

Mvh
Stig

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408920
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste