PHP - хранить функции для последующего запуска

В идеале я хочу иметь список функций, которые можно запустить позже. Затем в зависимости от ввода пользователя будет выбрана функция. Затем у пользователя будут запрошены параметры для этой функции. Это произойдет несколько раз, пока пользователь не введет, что он хочет, чтобы все функции запускались друг за другом.

У меня не может быть единой формы, так как нет фиксированного количества шагов. Количество функций зависит от пользователя. Они будут вводить нужные функции до тех пор, пока не введут, что хотят, чтобы все функции выполнялись в том порядке, в котором они были введены.

например Ввод-ответ Пользователь вводит данные. -- run ....... В зависимости от их ввода им будет предложено ввести параметры. Как далеко и как быстро? -- 100 и 10...... Функция становится run(100,10)

Еще один ввод -- крик........Кричать что? -- Привет........ Функция становится кричать (привет)

Следующий вход --- прыжок ...... Как высоко? -- 8......... Функция будет прыжок(8)

После всего этого, когда пользователь дает ввод «играть», нужно сделать следующее по порядку: бежать(100,10), кричать(привет), прыгать(8)

Заранее спасибо :)


person QLN33    schedule 02.01.2011    source источник
comment
Вы хотите, чтобы это происходило интерактивно? то есть: вы пытаетесь написать парсер?   -  person John Parker    schedule 02.01.2011
comment
Очень плохо сформулированный вопрос. это обычное веб-приложение или консольное приложение? при чем здесь сон? Почему это делается в несколько шагов, а не в одном виде?   -  person Your Common Sense    schedule 02.01.2011
comment
ну, я бы сказал, что пользовательский интерфейс будет более сложной вещью, чем выполнение всех ваших функций по порядку. Просто сохраните все пользовательские входные данные в массиве сеанса, а затем выполните итерацию по нему, получая функции и параметры, а затем запуская их.   -  person Your Common Sense    schedule 02.01.2011
comment
Точно спасибо! И что, если бы это было консольное приложение? Тогда как бы вы это сделали?   -  person QLN33    schedule 02.01.2011


Ответы (1)


Вы можете на первом этапе сохранить имя функции в переменной, а затем использовать call_user_func($funcName, $arg1, $arg2, ..) для ее вызова с аргументами из второго шага.

И если вы попытаетесь вызвать метод класса, а не глобальные функции, вы должны сохранить его как array($instance, 'methodName') или array('className', 'methodName') для статических методов.

person Seldaek    schedule 02.01.2011