Hallow

<?php

function testfunction($eenvariable)
{
echo "Eens kijken of de variable is gegevent: $eenvariable";
}
$waarde = "Hij werkt!";
$functionnaam = "testfunction";

//Ik wil de function op deze manier oproepen:
$functionnaam($waarde);
//$functionaam=testfunction en $waarde="Hij werkt!"
// Dus samen zou die zijn: testfunction("Hij werkt!")
?>

Ik heb dit nodig voor een script waar de function namen in een array staan en de waarde een _POST is. Weet iemand hoe ik dit kan krijgen? Soms werkt het als ik { en } gebruikt, maar nu niet.
Grtz DDragonz
<?php
//Ik wil de function op deze manier oproepen:
eval($functionnaam($waarde));
?>

is maar een wilde gok
edit1:
Huh, ik zie dat deze test het wel doet. Maar in mijn script doet ie het niet (binnen een class).

edit2:
Heb het al? Echt raar ik deed dit van te voren ook nog en toen deed hij het niet. (Meschien moet ik toch maar gaan slapen :P)
$a = $this->fieldvali;
$b = $this->$fieldname;
$a($b);

edit3:
Dit gaat niet:
$this->fieldvali($this->fieldname);
Dan krijg ik de error:

Fatal error: Call to undefined method textareafield::fieldvali() in H:\prog\Webserver\root\formbuilder\fields\class.textareafield.php on line 33

(Ben bezig met een class die (valid)xhtml forms maakt. Zo iets bestaat al maar ik werk liever met mijn eigen scripts :P. Dan snap ik het hele code :))

Maar die functie eval() ken ik niet even kijken wat dat dan is... :)

Zomaar een gok. Ik kan hier nu niets testen. Denk eigenlijk dat het niet gaat.

eval($functionnaam($waarde));

Edit: Ik was weer eens te laat. En ik heb echo verwijderd.
Aah, dit kan wel eens van toepassing komen:
eval — Evaluate a string as PHP code
mixed eval ( string $code_str )
in php kan je gewoon die functie zo aanroepen: $functionnaam($waarde);

als hij niet werkt in je klasse kan dit zijn omdat je in je klasse geen toegang hebt tot $functionnaam (echo die eens om te controleren)
En anders zijn er altijd nog [php]call_user_func[/php] en [php]call_user_func_array[/php]. Als je die naar een method uit een klasse wil laten aanroepen geef je als eerste parameter een array met als 0de entry het object en als 1e entry de functienaam (string) mee.
waarom een echo in een functie en geen return?

<?php

function testfunction($eenvariable)
{
return "Eens kijken of de variable is gegevent: $eenvariable";
}
$waarde = "Hij werkt!";
$functionnaam = "testfunction";

//Ik wil de function op deze manier oproepen:
echo functionnaam($waarde);
//$functionaam=testfunction en $waarde="Hij werkt!"
// Dus samen zou die zijn: testfunction("Hij werkt!")
?>
<?php eval("$functionnaam('$waarde')"); ?> zal mijnsinziens moeten werken.

@Crispijn:
waarom een return, en geen echo? Nu moet je bij het aanroepen van je functie ook nog eens de return echo'en. Bovendien: mocht je meerdere dingen willen echo'en werkt dit natuurlijk niet.
Waarom altijd die discussie over echo of return, hangt toch totaal van bedoeing van functie af. Ik gebruik eigenlijk standaard return, en als ik meerdere dingen wil returnen zet ik het gewoon eerst in een var, en return daarna de var.
Oftewel: Lekker boeiend hoe anderen het doen :)
@WillemJan: Oke, mee eens ;-)

Reageren