2011-01-02 51 views
0

Idealerweise möchte ich eine Liste von Funktionen haben, die später ausgeführt werden können. Je nach Benutzereingabe wird dann eine Funktion ausgewählt. Der Benutzer wird dann nach Parametern für diese Funktion abgefragt. Dies geschieht mehrmals, bis der Benutzer eingibt, dass alle Funktionen nacheinander ausgeführt werden sollen.PHP - Speichern von Funktionen zum späteren Ausführen

Ich kann kein einziges Formular haben, da es keine feste Anzahl von Schritten gibt. Die Anzahl der Funktionen hängt vom Benutzer ab. Sie geben die gewünschten Funktionen ein, bis sie eingegeben haben, dass alle Funktionen in der Reihenfolge ausgeführt werden sollen, in der sie eingegeben wurden.

z.B. Eingabe - Antwort Ein Benutzer wird eine Eingabe bereitstellen. - run ....... Abhängig von ihrer Eingabe werden sie nach Parametern gefragt. Wie weit und wie schnell? - 100 und 10 ...... Die Funktion wird ausgeführt (100,10)

Ein anderer Eingang - Ruf ......... Ruf was? - Hi ........ Die Funktion wird Ruf (hi)

Nächste Eingabe --- Sprung ...... Wie hoch? - 8 ......... Funktion würde Sprung sein (8)

Nach all dem, wenn der Benutzer die Eingabe „Play“ gibt, sollte Folgendes getan werden, um: Lauf (100, 10), ruf (hallo), Sprung (8)

Vielen Dank im Voraus :)

+0

Soll das interaktiv geschehen? Das heißt: Versuchen Sie einen Parser zu schreiben? –

+0

Sehr schlecht geformte Frage. ist es übliche Webanwendung oder Konsolenanwendung? Was nutzt der Schlaf hier? Warum wird es in mehreren Schritten gemacht, nicht in einer einzigen Form? –

+0

Nun, ich würde sagen, dass die Benutzeroberfläche komplizierter wäre als die Ausführung aller Funktionen in Reihenfolge. Speichern Sie einfach alle Benutzereingaben in einem Session-Array und durchlaufen Sie sie dann, um Funktionen und Parameter zu erhalten und dann auszuführen –

Antwort

1

Sie können im ersten Schritt Laden der Funktionsname in einer variablen, und dann call_user_func($funcName, $arg1, $arg2, ..) verwenden es zu nennen mit den Argumenten aus der zweite Schritt. Wenn Sie versuchen, eine Methode für eine Klasse und nicht für globale Funktionen aufzurufen, müssen Sie sie als array($instance, 'methodName') oder array('className', 'methodName') für statische Methoden speichern.

Verwandte Themen