0

基本的には、(通常のように)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 にする必要があります。これはオブジェクト指向プログラミング(クラス)を使ったほうがいいのでしょうか?

基本的に、適切な方法でこのようにする方法についてのアドバイスのみが必要です:)

よろしく、ジョナス

4

5 に答える 5

1

次のようなスイッチですべての関数をラップします。

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);
}
于 2010-10-07T20:16:02.467 に答える
0

なぜあなたはこれをする必要があるのでしょうか?function_5()が呼び出された後にfunction_3()が呼び出され、function_5()のチェックに合格すると、$ aの結果が異なると言っていますか?

あなたは一般的にあなたの論理を再考する必要があるかもしれません。

ちなみに、短いタグは使用しないでください。書き出す

<?php
于 2010-10-08T04:32:44.057 に答える
0

前の関数の戻り値に基づいて関数呼び出しを行うことができます

例:

function one() {
   if()...
      return 'run function two';
   else 
      return 'run function four';
}
于 2010-10-07T20:06:48.543 に答える
0

「変数関数」または「call_user_func()関数」を使用してください。説明する時間がないので、そのキーワードでググってください。

于 2010-10-07T20:19:47.067 に答える
0
$step=1;
while($step < 99){
スイッチ ($step){
    ケース 1:
        $step=function_1();
        壊す;
    ケース 2:
        $step=function_2();
        壊す;
    ケース 3:
        $step=function_3();
        壊す;
    ...
    ケース 9:
        $step=function_9();
        壊す;
    デフォルト:
        $step=99;
        }
    }
于 2010-10-07T20:16:58.960 に答える