Avatar billede Slettet bruger
12. august 2005 - 23:13 Der er 11 kommentarer og
1 løsning

Få navn på parameter

Hej,

Er det i PHP muligt at få NAVNET på den parameter en funktion eller metode kaldes med, eksempelvis:

foo($bar);

function foo($arg) {
  // her vil jeg vide at funktionen er kaldt med en variabel, der har navnet "bar"
}

Tror ikke det er muligt.
Avatar billede erikjacobsen Ekspert
12. august 2005 - 23:15 #1
hva' ska' du bruge det til ?
Avatar billede Slettet bruger
12. august 2005 - 23:25 #2
Til en cache, jeg er ved at lave, det er lidt en lang historie.
Men brugeren kan kalde en funktion i API'et, som ser ud ala:

cache($side_navn, $args);

$side_navn kunne eksempelvis være foo.php.

Det medvirker at indholdet af foo.php genereres (siden hentes) og caches.
Hvis man giver $args med, så skal der caches varianter af foo.php.

Eksempelvis:

cache("foo.php", $_GET['id'])

Så eksekveres foo.php (som anvender $_GET['id'], eg. i en SELECT), og der caches en kopi af foo.php for hver forskellig $_GET['id'] funktionen kaldes med. foo.php varierer altså med $_GET['id'].

Uden args ville nøglen i cachen være foo.php.

Med args kunne nøglen i cachen være foo.php$_GET['id']=3 (hvis indholdet af $_GET['id'] var 3). Eller en hash af dette.
Avatar billede Slettet bruger
12. august 2005 - 23:26 #3
Hvis der er noget med du ikke deltager i spørgsmål >= 60 points, så må du lige sige til, så sætter jeg antallet ned. Dét skal da ikke afholde dig fra at kommentere, og mig fra at få lidt input :)
Avatar billede Slettet bruger
12. august 2005 - 23:27 #4
Bortset fra det, tror jeg slet ikke informationen er tilgængelig (i PHP motoren). Måske den er, hvis variablen overføres som reference.
Avatar billede Slettet bruger
12. august 2005 - 23:39 #5
Så som jeg ser det, er eneste mulighed at åbne PHP filen, der laver metode kaldet, og parse den, for at få navnet. Og det er mindre behændigt, når det nu har noget med caching at gøre.
Avatar billede erikjacobsen Ekspert
13. august 2005 - 00:47 #6
En parameter behøver ikke have et navn, for det behøver ikke være en variabel. Hva' om du gav et navn med som en ekstra parameter, som kun bruges som fremtidig reference til den cachede værdi (vink: det gør man faktisk andre steder *g*)
Avatar billede nielle Nybegynder
13. august 2005 - 00:54 #7
Du kan ikke få fat i navnet på parameteren - som erikjacobsen bemærker er det ikke en gang sikkert at der overhvoedey var en parameter.

Imidlertid kan du måske gøre noget andet - nemlig at sende navnet på parameteren i stedet for værdien af den:

$dinParameter = 42;
foo("dinParameter")

function foo($parameterName)
{
    echo $$parameterName;
    // ...
}
Avatar billede Slettet bruger
13. august 2005 - 01:13 #8
nielle: I know, erikjacobsen: Jeps, ville gerne spare det.
Avatar billede Slettet bruger
13. august 2005 - 01:14 #9
Hvis i vil have point for jeres indsats læg svar.
Avatar billede erikjacobsen Ekspert
13. august 2005 - 09:37 #10
Ingen point til mig, tak.
Avatar billede nielle Nybegynder
13. august 2005 - 09:39 #11
Hele 200 point for at fortælle dig noget du allerede vidste? Nej, tak. :^)
Avatar billede Slettet bruger
13. august 2005 - 14:23 #12
Ok.
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