0

これについて調べましたが、探していたものが見つかりませんでした。ReflectionClassを試しましたが、うまくいきませんでした。

関数付きのクラスがあります。関数に入る変数の数は動的です。

例:

含まれるクラス:

class Home {
  function test($var1, $var2, $var3){
    // do stuff here
  }
}

// this class is included based on url params, i.e. example.com/home/test/1/2/3
// where home is class, test is function and 1 2 3 are variables

$variables = array('1','2','3'); // static for this example, but array can have any number of elements to it.

$foo = new Home();
$foo->test($variables);

call_user_func_array('test', $variables);

したがって、私が達成しようとしているのは、変数の配列を取得して、コード例のように関数テストに送信することです。ここで、各変数を一覧表示できます。

以下のこの例は私がやりたいことをしますが、それをクラス/ mvcフレームワークにどのように適用しますか?

$colors = array('test','maroon','blue','green');
call_user_func_array('setLineColor', $colors);

function setLinecolor($var1, $var2, $var3, $var4){
  echo $var1;
  echo $var2;
}

これについて何か考えはありますか?

4

2 に答える 2

2

オブジェクトに適切なコールバックを使用します。

$foo = new Home();
call_user_func_array( array( $foo, 'test'), $variables);

これtest()により、オブジェクトの関数が呼び出され$fooます。

于 2012-08-16T02:18:48.027 に答える
0

連想配列を送信してから、関数でextract withを使用することを検討しましたか?

好き:

// using 
$variables = array('var1'=>'1', 'var2'=>'2', 'var3'=>'3');
// instead of
$variables = array('1','2','3');

そして、機能:

function test($variables)
{
extract($variables);
echo $var1;
echo $var2;
}
于 2012-08-16T02:28:00.193 に答える