Avatar billede dennism Nybegynder
01. juli 2005 - 15:50 Der er 5 kommentarer og
1 løsning

PHP: global alle variabler i en funktion

Når man laver en funktion i PHP, er man nødt til at f.eks. at skrive "global $var" i sin funktion, hvis man vil have, at variablen $var skal være tilgængelig i funktionen.

Det jeg efterlyser nu, er en måde hvorpå man kan gøre alle variabler globale på en gang?
Avatar billede dennism Nybegynder
01. juli 2005 - 17:15 #1
Kan det virkelig ik lade sig gøre?
Avatar billede rtfm_now Nybegynder
01. juli 2005 - 17:17 #2
Prøvet med et loop ? o.O

Hvad er formålet med denne galskab ? Jeg har aldrig haft brug for sådanne globale værdier, ikke engang i high-level oop scripting.
Avatar billede serge Nybegynder
01. juli 2005 - 23:42 #3
Det kan man såmænd godt:

<?php
  function minFunktion() {
    extract($GLOBALS);
    // nu har du alle dine globale variable.
  }
?>

... men hvis man har brug for det, vil det med 99.999% sikkerhed være et godt tegn på, at man bør skrive sin kode om for at undgå det ;)

Lidt forklaring: Funktionen extract() laver et array om til variable, med navne baseret på deres key, så:

<?php
  $myArray = array(
    'title' => 'MirrorMask';
    'director' => 'Dave McKean';
  );
  extract($myArray);
  echo $title; // returnerer 'MirrorMask'
  echo $director; // returnerer 'Dave McKean'
?>

Det samme lader sig altså gøre med $GLOBALS, som indeholder alle globale variable med variabelnavnet som key.
Avatar billede erikjacobsen Ekspert
01. juli 2005 - 23:46 #4
Det er mere "prof" at sætte

  error_reporting(E_ALL);

Så får du at vide, når du kommer til at referere en udefineret variabel, fx på
grund af en manglende "global $var", og kan så fixe det, inden det giver mystiske
fejl i koden.

Antallet af gange du skal bruge "global" er omvendt proportional med kvaliteten
af koden ( ... ok, en grov generalisering, men alligevel...), så hold dem til et
minimum. Tag de ting du har brug for med som parametre til funtionen.
Avatar billede dennism Nybegynder
12. juli 2005 - 09:12 #5
erikjacobsen >>

Smider du lige et svar?
Avatar billede erikjacobsen Ekspert
12. juli 2005 - 09:27 #6
Nej tak, Dennis, jeg samler slet ikke på point.

Man kan her i sommervarmen blive lidt filosofisk over de valg, der engang blev
truffet i PHP-sproget - specielt om scope af variabler (dvs. hvor de kan ses).
Ingen tvivl om at det er pænt, at man ikke bare kan referere til globale variabler,
for det kan gøre det nemmere at læse hvad en funktion gør. Og alligevel gælder det ikke for $_POST og
$_GET etc. Og så man kan også kigge på andre nye sprog, Java, C#, VB.NET, hvor ingen af dem
har valgt den regel, der gælder i PHP. Nå, men sådan er der så meget...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester