einer Funktion eine Funktions als Parameter übergeben
hans_69
- php
Hallo alle zusammen,
kann ich eine Funktion einer anderen Funktion als Parameter übergeben?
vielen Dank
Hans
Hallo Hans,
kann ich eine Funktion einer anderen Funktion als Parameter übergeben?
ich habe nicht ganz verstanden, was Du damit meinst. Ich sehe zwei unterschiedliche Anwendungsfälle:
a) Du kannst einer Funktion statt einer Variablen auch den Rückgabewert einer
Funktion übergeben.
b) es gibt Funktionen, die einen Funktionsnamen als Parameter entgegennehmen.
In selbstgeschriebenen Funktionen könntest Du eine solche Funktion mittels
call_user_func() ausführen.
Beispiele für b) wäre zum Beispiel die Funktion usort().
Was ist genau Deine Fragestellung?
Freundliche Grüße
Vinzenz
Also ich habe eine Funktion z.B. foo:
foo()
{
echo "Hallo hier bin ich!";
}
dann gibt es aber noch eine andere Funktion, die foo() verwenden will:
bar() //hier will ich nun irgendwie die Funktion foo() übergeben
{
//und hier müsste ich sie ausführen
echo "Und wie gehts jetzt weiter?";
}
Vielen Dank für die Hilfe
Hans
Grüße,
foo()
{
return "Hallo hier bin ich!";
}
bar() //hier will ich nun irgendwie die Funktion foo() übergeben
{
echo foo(); <-schreibt den return-wert der foo()
echo "Und wie gehts jetzt weiter?";
}
MFG
bleicher
Hallo,
foo()
{
echo "Hallo hier bin ich!";
}
dann gibt es aber noch eine andere Funktion, die foo() verwenden will:
Es ist nicht nötig, Funktionen zu übergeben. Funktionen kannst Du einfach aufrufen.
bar() //hier will ich nun irgendwie die Funktion foo() übergeben
{
//und hier müsste ich sie ausführen
// Dann tu's doch:
foo();
echo "Und wie gehts jetzt weiter?";
}
Freundliche Grüße
Vinzenz
Es ist nicht nötig, Funktionen zu übergeben. Funktionen kannst Du einfach aufrufen.
Und wenn mir beim Schreiben einer Funktion nicht klar ist, welche Funktion überhaupt verwendet werden soll? Du hast mit der Sortierfunktion doch schon selbst das beste Beispiel geliefert - wenn die allgemein sortieren soll (das Vergleichskriterium also variabel sein soll), kann man ja keine Funktion fest verdrahten.
bar() //hier will ich nun irgendwie die Funktion foo() übergeben
{
//und hier müsste ich sie ausführen
// Dann tu's doch:
foo();
echo "Und wie gehts jetzt weiter?";
}
Hier ist die Javascript-Variante von dem, was er möchte:
function bar(foo){
foo();}
Da geht's ganz leicht und intuitiv.
Dann hast du doch schon mit call_user_func den richtigen Tipp von Vinzen bekommen. Du übergibst allerdings nicht die Funktion selbst, sondern nur den Namen.