0

タイトルをより適切に表現する方法がよくわかりません。

私がする必要があるのは、call_user_funcでメソッドを呼び出すことです。私が呼び出しているメソッドは、配列ではなく、いくつかの異なる変数(var1、var2、var3など)を受け入れます。問題は、関数を呼び出すときに、別の変数として持っている配列をメソッドに渡す必要があることです。披露させて。

これが私の方法です:

class Test {

    public function testing_cronjob($p1, $p2, $p3, $p4, $p5) {
        echo 'p1 = ' . $p1 . '<br />';
        echo 'p1 = ' . $p2 . '<br />';
        echo 'p1 = ' . $p3 . '<br />';
        echo 'p1 = ' . $p4 . '<br />';
        echo 'p1 = ' . $p5 . '<br />';
    }
}

そして、これが私が現在(試して)それを呼び出す方法です:

$obj = new Test();
call_user_func(array($obj, 'testing_cronjob'), $params);

メソッドは実行されますが、取得する変数は1つだけであり、これは私が望むものではありません。

$paramsは次のようになります。

$params = array(
    0 => 'first one',
    1 => 'second one',
    2 => 'third param!',
    3 => 'oh and im fourth!!',
    4 => 'im last, fml! :('
)

私がこの状況に陥ったのは、cronjobモデルを作成しているためです。クラスとメソッド名とともにパラメータを受け入れます。それはすべてデータベースに保存されており、実行時に、意図したとおりに$paramsをメソッドに送信できる必要があります。

メソッドが変数を受け入れる方法を書き直すことはできません。それは非常に手間がかかるからです。cronjobからいくつか(10以上)のメソッドを呼び出すことにします。これらはすべて、アプリケーションで非常によく使用されています。また、どのように書き直すかはわかりませんが、何か提案があれば教えてください。

また、それが重要な場合は、codeigniterを使用しています。私が何かに言及するのを忘れた場合、またはもっとコードが必要な場合は、コメントをドロップしてください。

これは可能ですか?回避策はありますか?どんな提案でも大歓迎です!

4

1 に答える 1

1

call_user_func_array 代わりに使用する必要があります:

$obj = new Test();
call_user_func_array(array($obj, 'testing_cronjob'), $params);
于 2012-10-09T19:28:00.727 に答える