|
| 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
| |
|
|