/ 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
Afvikle streng
Fra : Jimmy


Dato : 13-09-03 14:28

Hej

Jeg har følgende kode:


-----
function test ()
{
echo "Test";
}


$Streng = "test ()";
-----


Jeg ønsker du at afvikle strengen, altså kalde funktionen "test ()".

Jeg kiggede på eval(), men den lader ikke til at kunne hjælpe mig.

Nogen der har en ide?

mvh
JImmy



 
 
Hasse R. Hansen (13-09-2003)
Kommentar
Fra : Hasse R. Hansen


Dato : 13-09-03 15:16

On Sat, 13 Sep 2003 15:28:09 +0200, "Jimmy" <nyhedsgruppe@get2net.dk>
wrote:

>Hej
>
>Jeg har følgende kode:
>
>
>-----
>function test ()
> {
> echo "Test";
> }
>
>
>$Streng = "test ()";
>-----
>

$streng = test();

mvh.
Hasse R: Hansen
'
mvh.
Hasse R. Hansen

Jimmy (13-09-2003)
Kommentar
Fra : Jimmy


Dato : 13-09-03 15:34


"Hasse R. Hansen" <hasse@REMOVEramlev.dk> wrote in message
news:rk96mv8s2smtori72684ha3pa2t2jkop06@4ax.com...
> On Sat, 13 Sep 2003 15:28:09 +0200, "Jimmy" <nyhedsgruppe@get2net.dk>

>
> $streng = test();


Jeg oversimplificerede vist. Beklager.

Jeg har en funktion, som skal kalde en anden funktion, hvis navn den får via
sine egne parametre.

-----
Test ("Printer ()");

function Test ($Var_Function)
{
# Run $Var_Function;
}

function Printer ()
{
echo "Hej";
}
-----


Hvordan klarer jeg den?

Mvh
Jimmy





Martin C. Petersen (13-09-2003)
Kommentar
Fra : Martin C. Petersen


Dato : 13-09-03 15:52

> -----
> function test ()
> {
> echo "Test";
> }
>
>
> $Streng = "test ()";
> -----
>
>
> Jeg ønsker du at afvikle strengen, altså kalde funktionen "test ()".
Jeg mener at have set at følgende skulle virke:
<?php
$str = "test";
$str();
?>


Martin



Jimmy (13-09-2003)
Kommentar
Fra : Jimmy


Dato : 13-09-03 15:59


"Martin C. Petersen" <mcp@phys.au.dk> wrote in message
news:3f632ef8$0$83053$edfadb0f@dtext01.news.tele.dk...


> Jeg mener at have set at følgende skulle virke:
> <?php
> $str = "test";
> $str();
> ?>

Det gør det også.
Tak for hjælpen.

Mvh
Jimmy



Jimmy (13-09-2003)
Kommentar
Fra : Jimmy


Dato : 13-09-03 16:58


"Martin C. Petersen" <mcp@phys.au.dk> wrote in message
news:3f632ef8$0$83053$edfadb0f@dtext01.news.tele.dk...

> <?php
> $str = "test";
> $str();
> ?>


Nogle funktioner tager en række parametre, som ikke umiddelbart lader sig
overføre.

Jeg har f.eks. en funktion - Vejledning ($Typen, $Antal_Pr_Side) - hvor jeg
har prøvet at sende parametrene til den med som et array, men når jeg laver
en implode på det opfatter php det som om jeg kun sender eet argument til
funktionen.

Se nedenfor:

-----
Run_Function ($Tekst, $Function, $Parametre)
{
echo $Tekst ."<br>";
$Function (implode (",", $Parametre);
}

Vejledning ($Typen, $Antal_Pr_Side)
{
...
}
-----

Jeg ønsker ikke at ændre funktionen Vejledning så den tager et array som
argument.

Har jeg så nogle muligheder, når jeg skal have overført x antal argumenter
til den?

Mvh
Jimmy

PS Ved godt det virker rodet det her, men der er et formål



Per Thomsen (13-09-2003)
Kommentar
Fra : Per Thomsen


Dato : 13-09-03 17:49

Jimmy wrote:
[snip]
> Jeg har f.eks. en funktion - Vejledning ($Typen, $Antal_Pr_Side) - hvor jeg
> har prøvet at sende parametrene til den med som et array, men når jeg laver
> en implode på det opfatter php det som om jeg kun sender eet argument til
> funktionen.
Det gør du også. Du sender en streng med nogle værdier adskilst af
kommaer - men der er kun én streng.

>
> Se nedenfor:
>
> -----
> Run_Function ($Tekst, $Function, $Parametre)
> {
> echo $Tekst ."<br>";
> $Function (implode (",", $Parametre);

//Prøv denne i stedet for:
   eval ( $Function.'('.implode(',', $Parametre ).');');

> }
>
[klip]
MVH Per Thomsen,
http://www.pert.dk/


Martin C. Petersen (13-09-2003)
Kommentar
Fra : Martin C. Petersen


Dato : 13-09-03 18:01


"Per Thomsen" <pert@pert.dk> skrev i en meddelelse
news:bjvhpg$isc$1@sunsite.dk...
> Jimmy wrote:
> [snip]
> > Jeg har f.eks. en funktion - Vejledning ($Typen, $Antal_Pr_Side) - hvor
jeg
> > har prøvet at sende parametrene til den med som et array, men når jeg
laver
> > en implode på det opfatter php det som om jeg kun sender eet argument
til
> > funktionen.
> Det gør du også. Du sender en streng med nogle værdier adskilst af
> kommaer - men der er kun én streng.
>
> >
> > Se nedenfor:
> >
> > -----
> > Run_Function ($Tekst, $Function, $Parametre)
> > {
> > echo $Tekst ."<br>";
> > $Function (implode (",", $Parametre);
>
> //Prøv denne i stedet for:
> eval ( $Function.'('.implode(',', $Parametre ).');');
Det dur så kun hvis alle elementer i $Parametre er tal eller bool'ske
værdier (og måske flere typer).

For også at understøtte strenge og array's kunne man måske gøre sådan:
<?php
function getRep ($x)
{
return var_export($x,TRUE);
}

eval($Function."(".implode(",",array_map("getRep",$Parametre)).");");
?>



Jimmy (13-09-2003)
Kommentar
Fra : Jimmy


Dato : 13-09-03 18:14


"Martin C. Petersen" <mcp@phys.au.dk> wrote in message
news:3f634d45$0$83060$edfadb0f@dtext01.news.tele.dk...

> For også at understøtte strenge og array's kunne man måske gøre sådan:
> <?php
> function getRep ($x)
> {
> return var_export($x,TRUE);
> }
>
> eval($Function."(".implode(",",array_map("getRep",$Parametre)).");");
> ?>


Det virker væsentligt bedre, men den smider single quotes omkring
eniteterne, hvilket gør, at jeg ikke kan "pass variables by reference".

Jeg tror jeg ser om jeg ikke kan lave et helt andet setup, da det her vist
bliver for komplekst.

Tak for hjælpen.

Mvh
Jimmy



Dennis Møllegaard Pe~ (13-09-2003)
Kommentar
Fra : Dennis Møllegaard Pe~


Dato : 13-09-03 19:27

On Sat, 13 Sep 2003 17:58:29 +0200, Jimmy wrote:
> "Martin C. Petersen" <mcp@phys.au.dk> wrote in message
> news:3f632ef8$0$83053$edfadb0f@dtext01.news.tele.dk...
>> $str = "test";
>> $str();
> Nogle funktioner tager en række parametre, som ikke umiddelbart lader sig
> overføre.

Kan følgende ikke bruges?
mixed call_user_func ( callback function [, mixed parameter [, mixed
....]])

http://dk2.php.net/manual/en/function.call-user-func.php

Udmiddelbart virker det lidt voldsomt at bruge eval til at kalde en enkelt
funktion.

--
Dennis Møllegaard Pedersen, Denmark
replace eater with my firstname eater@moellegaard.dk
PGP fingerprint = 5A23 2E7D 7F4F 7FBE 39AC CDEF 55A0 FF70 87C0 59D9


Rasmus Hansen (15-09-2003)
Kommentar
Fra : Rasmus Hansen


Dato : 15-09-03 14:46

Jimmy wrote:

> Har jeg så nogle muligheder, når jeg skal have overført x antal
argumenter
> til den?

Prøv at kig på http://dk2.php.net/func_num_args ved ikke helt om det er
det du vil..

Mvh
Rasmus


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

Månedens bedste
Årets bedste
Sidste års bedste