Перебирая несколько функций в PHP - PullRequest
0 голосов
/ 08 октября 2010

В основном я хочу добиться такой функциональности, чтобы 5-10 функций выполнялись подряд (как обычно). Однако я хочу, чтобы скрипт вернулся на несколько шагов назад (например, с 5-го на 3-е) и продолжил (например, 4,5,6,7,8,9,10), если получен конкретный возврат. Пример:

<?
function_1st();
function_2nd();
function_3rd();
function_4th();
$a = function_5th();
if($a == '3') //continue from 3rd further;
function_6th();
function_7th();
?>

Как и в этом случае, оно должно быть 1,2,3,4,5,3,4,5,6,7,8,9,10. Было бы лучше использовать объектно-ориентированное программирование (класс) в этом?

В основном мне нужен только совет, как сделать так, как нужно:)

С уважением, Jonas

Ответы [ 5 ]

1 голос
/ 08 октября 2010

обернуть все функции в переключателе что-то вроде:

function run($n) {
    switch($n) {
      case 1: $a = func1(); break;
      case 2: $a = func2(); break;
      case 3: $a = func3(); break;
      case 4: $a = func4(); break;
      case 5: $a = func5(); break;
      case 6: $a = func6(); break;
      case 7: $a = func7(); break;
      case 8: $a = func8(); break;
      case 9: $a = func9(); break;
      default: return $a;
    }
    run($a ? $a : $n+1);
}
0 голосов
/ 08 октября 2010

Зачем вам это нужно?Вы говорите, что результаты для $ a будут другими, если функция function_3 () будет вызвана после того, как ей была вызвана функция function_5 (), и тогда она пройдет проверку на function_5 ()?

Возможно, вам понадобитсяпереосмыслить свою логику в целом.

Кстати, не используйте короткие теги.Выпиши

<?php
0 голосов
/ 08 октября 2010

Используйте «переменные функции» или «call_user_func () function». У меня нет времени, чтобы объяснить это, пожалуйста, Google эти ключевые слова.

0 голосов
/ 08 октября 2010
$step=1;
while($step < 99){
switch ($step){
    case 1:
        $step=function_1();
        break;
    case 2:
        $step=function_2();
        break;
    case 3:
        $step=function_3();
        break;
    ...
    case 9:
        $step=function_9();
        break;
    default:
        $step=99;
        }
    }
0 голосов
/ 08 октября 2010

Вы можете основывать вызовы функций на предыдущей функции return

Пример:

function one() {
   if()...
      return 'run function two';
   else 
      return 'run function four';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...