Avatar billede moddi100 Seniormester
07. marts 2009 - 14:44 Der er 3 kommentarer og
1 løsning

Globals virker IKKE med create_function()

Støtte for nylig over følgende:

$func = create_function('', '
  function test()
  {
    global $var;
    var_dump($var);
  }
  $var = "Tekst";
  test();
');
$func();

Følgende udskriver 'NULL', altså ikke det ønskede resultat. Flytter man til gengæld

$var = "Tekst";

uden for create_function() virker det.

Nogen der har en forklaring?
Avatar billede erikjacobsen Ekspert
07. marts 2009 - 15:36 #1
$func = create_function('', '
  global $var;
  function test()
  {
    global $var;
    var_dump($var);
  }
  $var = "Tekst";
  test();
');
$func();
Avatar billede moddi100 Seniormester
07. marts 2009 - 15:40 #2
Ja okay, lidt en bummert herfra. Når $var sættes, sker det jo også inde i en funktion og den bliver derved kun oprettet i funktionens scobe.

Smid et svar, hvis du ønsker point
Avatar billede erikjacobsen Ekspert
07. marts 2009 - 15:43 #3
Nej tak. Der sker nu også noget "sjovt" med din konstruktion, hvis du kalder den to gange:

$func();
$func();

PHP er nemlig ikke beregnet til at erklære funktioner i funktioner. Prøv selv. Sproget PHP er faktisk lidt af en underlig fisk ;)
Avatar billede moddi100 Seniormester
07. marts 2009 - 16:16 #4
Tak for svar.
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

IT-JOB