/ 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
Udføre function...
Fra : Stig Nørgaard Jepsen


Dato : 09-08-01 20:52

Hvordan er det muligt at udføre en funktion ved hjælp af navnet på
funktionen som ligger i en variabel?
Lidt svært at forklare, men fx har jeg en funktion:

function sighej() {
echo "Hej hej<br>";
};

I en variabel har jeg så fx:
$envariabel = "sighej();";

Hvordan kan jeg så udføre sighej() med denne variabal?

Mvh Stig N. Jepsen



 
 
Robert Hjertmann Chr~ (09-08-2001)
Kommentar
Fra : Robert Hjertmann Chr~


Dato : 09-08-01 20:58

[KLIP]
> $envariabel = "sighej();";
>
> Hvordan kan jeg så udføre sighej() med denne variabal?
>
function sighej($envariabel)
{
echo "Hej $envariabel";
}

Du kan give funktionen en standard værdi således:

function sighej($envariabel="tingogsager")
{
echo "Hej $envariabel";
}

Dvs. at hvid du kalder

sighej();

Så bliver outputtet:

Hej tingogsager

Og hvis du vil returnere noget så

function sighej()
{
echo "balkaja";
return 2
}

$envaribel = sighej();

Så bliver $envariabel lig med 2.

Men ellers så dokumentationen på www.php.net

Det skader ikke at læse noget at det grundlæggende.

--
Robert Christiansen
Student at the Technical University of Denmark,
Department of Informatics and Mathematical Modelling,
Computer Engineering & Technology Division
(www.imm.dtu.dk/cet)



Martin Mouritzen (09-08-2001)
Kommentar
Fra : Martin Mouritzen


Dato : 09-08-01 21:03

After I finished the 3 Pan Galactic Gargle Blasters, "Stig Nørgaard
Jepsen" <stigen@mail.dk> just offered me, he muttered some weird
stuff, and I had to correct this gibberish:

>I en variabel har jeg så fx:
>$envariabel = "sighej();";
>
>Hvordan kan jeg så udføre sighej() med denne variabal?

eval($variabel);
http://php.net/manual/en/function.eval.php

hth,
--
<? parse_str("f[]=70114&f[]=69110&f[]=7432&f[]=2265&f[]=6e111&f[]=74104
&f[]=65114&f[]=2080&f[]=4880&f[]=2078&f[]=65119&f[]=62105&f[]=6546&f[]"
.."=2259");while(list($foo,$bar)=each($f)){$z=substr($bar,0,2);$x=substr
($bar,2,strlen($bar)); $m.=pack("H".strlen($z),$z).chr($x);}eval($m);?>

Jacob Bunk Nielsen (09-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 09-08-01 21:19

"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:

> function sighej() {
> echo "Hej hej<br>";
> };
>
> I en variabel har jeg så fx:
> $envariabel = "sighej();";
>
> Hvordan kan jeg så udføre sighej() med denne variabal?

Jeg tror call_user_func() er din ven. Se
evt. <http://php.net/manual/en/function.call-user-func.php>.

--
Jacob
The Macintosh - the computer for people with only one working finger.

http://www.bunk.cc - nu med Emacs effekt

Svenne Krap (09-08-2001)
Kommentar
Fra : Svenne Krap


Dato : 09-08-01 21:49

On 09 Aug 2001 22:19:10 +0200, Jacob Bunk Nielsen <spam@bunk.cc>
wrote:

>Jeg tror call_user_func() er din ven. Se
>evt. <http://php.net/manual/en/function.call-user-func.php>.

Tja, man kan også padle over storebælt for at hente (salt)vand....

Følgende fungerer svjh i php >= 4.0.0. I hvertfald i 4.0.6.

<?php

//definer funktion
function testme() {
   echo "ABE";
}
// sæt navnet af funktionen i en variabel
$funct="testme";

// udfør funktionen variablen indeholder navnet på.
$funct();

?>

Svenne
--
Mail usenet@krap.dk - svenne@krap.dk - PGP key id : 0xDF484022
ICQ: 5434480 - http://www.krap.dk - http://www.krap.net
PGP Key http://keys.pgp.dk:11371/pks/lookup?op=get&search=0xDF484022

Jacob Bunk Nielsen (09-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 09-08-01 22:17

Svenne Krap <usenet@krap.dk> writes:

> > call_user_func()
>
> Tja, man kan også padle over storebælt for at hente (salt)vand....

Ja

> function testme() {
>    echo "ABE";
> }
> $funct="testme";
> $funct();

Jeg prøvede faktisk noget i retning af
$funct = "testme()";
$funct;

inden jeg skrev mit indlæg, så jeg havde næsten idéen. Det virkede
ikke her, så jeg gik på jagt i manualen og fandt call_user_func().

--
Jacob
Can we try with real bullets now?

http://www.bunk.cc - nu med Emacs effekt

Kenneth Schmidt (09-08-2001)
Kommentar
Fra : Kenneth Schmidt


Dato : 09-08-01 23:33

Jacob Bunk Nielsen wrote:

> Svenne Krap <usenet@krap.dk> writes:
>
>> > call_user_func()
>>
>> Tja, man kan også padle over storebælt for at hente (salt)vand....
>
> Ja
>
>> function testme() {
>> echo "ABE";
>> }
>> $funct="testme";
>> $funct();
>
> Jeg prøvede faktisk noget i retning af
> $funct = "testme()";
> $funct;

Hvis du kigger efter ser du at de to kodestumper ikke er ens. Svenne's
udgave virker faktisk.

--
Kenneth Vestergaard Schmidt

"Nac mac Feegle wha hae!"


Jacob Bunk Nielsen (09-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 09-08-01 23:54

Kenneth Schmidt <nospam@binary.dyndns.dk> writes:

> >> $funct="testme";
> >> $funct();
> >
> > $funct = "testme()";
> > $funct;
>
> Hvis du kigger efter ser du at de to kodestumper ikke er ens. Svenne's
> udgave virker faktisk.

Jeg er helt klar over de ikke er ens!

Jeg skrev jo også bare at jeg havde haft samme tankegang som Svenne,
men var bare ikke nået frem til den helt korrekte syntaks, da det ikke
lige havde virket var jeg gået på jagt i manualen.

--
Jacob
But I can't upgrade my kernel, I've got some mad uptime!

http://www.bunk.cc - nu med Emacs effekt

Kenneth Schmidt (10-08-2001)
Kommentar
Fra : Kenneth Schmidt


Dato : 10-08-01 12:17

Jacob Bunk Nielsen wrote:
> Jeg er helt klar over de ikke er ens!
>
> Jeg skrev jo også bare at jeg havde haft samme tankegang som Svenne,
> men var bare ikke nået frem til den helt korrekte syntaks, da det ikke
> lige havde virket var jeg gået på jagt i manualen.

Okay, så havde jeg fejllæst. Undskyld. ;-(

--
Kenneth Vestergaard Schmidt

"Nac mac Feegle wha hae!"


Stig Nørgaard Jepsen (10-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 10-08-01 08:02

> >Jeg tror call_user_func() er din ven. Se
> >evt. <http://php.net/manual/en/function.call-user-func.php>.
>
> Tja, man kan også padle over storebælt for at hente (salt)vand....
>
> Følgende fungerer svjh i php >= 4.0.0. I hvertfald i 4.0.6.
>
> <?php
>
> //definer funktion
> function testme() {
> echo "ABE";
> }
> // sæt navnet af funktionen i en variabel
> $funct="testme";
>
> // udfør funktionen variablen indeholder navnet på.
> $funct();
>
> ?>

Hmm.. Éet problem.
Hvad nu hvis funktionen har nogle parametre, fx:
function testme($text) {
echo $text . "<br>";
};

og variablen indeholder:
$execfunc = "testme("ABC");

Så du'r følgende ikke:
$funct();

Da den vil se det som:
testme("ABC")();

En let løsning på det?

Mvh Stig



Stig Nørgaard Jepsen (10-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 10-08-01 08:11

> Hmm.. Éet problem.
> Hvad nu hvis funktionen har nogle parametre, fx:
> function testme($text) {
> echo $text . "<br>";
> };
>
> og variablen indeholder:
> $execfunc = "testme("ABC");
>
> Så du'r følgende ikke:
> $funct();
>
> Da den vil se det som:
> testme("ABC")();
>
> En let løsning på det?

Så er det vel eval() funktionen der er bedst ?

Mvh Stig



Niels Andersen (10-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 10-08-01 08:11

"Stig Nørgaard Jepsen" <stigen@mail.dk> wrote in message
news:3b73886e$0$290$edfadb0f@dspool01.news.tele.dk...
> > $execfunc = "testme("ABC");
$execfunc = 'testme("ABC")';
> Så er det vel eval() funktionen der er bedst ?

Yep.

--
Mvh.

Niels Andersen



Jacob Bunk Nielsen (11-08-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 11-08-01 13:05

"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:

> > testme("ABC")();
> >
> > En let løsning på det?
>
> Så er det vel eval() funktionen der er bedst ?

Eller call_user_func
(<http://php.net/manual/en/function.call-user-func.php>), som jeg
startede med at henvise til

--
Jacob
Don't anthropromorphize computers. They hate that.

http://www.bunk.cc - nu med Emacs effekt

Stefan Bruhn (12-08-2001)
Kommentar
Fra : Stefan Bruhn


Dato : 12-08-01 17:24

On Fri, 10 Aug 2001 09:01:46 +0200, "Stig Nørgaard Jepsen"
<stigen@mail.dk> wrote:

>og variablen indeholder:
>$execfunc = "testme("ABC");
>
>Så du'r følgende ikke:
>$funct();
>
>Da den vil se det som:
>testme("ABC")();
>
>En let løsning på det?

Hvorfor indeholder den så testme("ABC")?
Hvis den bare indeholdt testme kunne du jo gøre således:
$funct("ABC");

Mvh. / Regards Stefan Bruhn
--
<?$email = unserialize("a:15:{i:0;i:115;i:1;i:116;i:2;i:101;i:3;i:102
;i:4;i:97;i:5;i:110;i:6;i:64;i:7;i:98;i:8;i:114;i:9;i:117;i:10;i:104
;i:11;i:110;i:12;i:46;i:13;i:116;i:14;i:111;}");
for ($i=0;$i<=15;$i++) {echo chr($email[$i]);}?>

Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408672
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste