0

関数名を動的に呼び出す必要があります。

$myFunction = isset($somecondition) ? "function1(100,100)" : "function(300,300)";

次に、メソッドを呼び出す必要があります

$myclass->$myFunction;
4

3 に答える 3

2

このような文字列に関数呼び出しを格納することはできません。関数名とパラメーターを別々に格納することもできますが、単純なifステートメントを使用し、特定のパラメーターを使用していずれかのメソッドを呼び出す方がよいでしょう。

if($someCondition){
    $myClass->function1(100, 100);
} else {
    $myClass->function(300, 300);
}

他の方法は、関数名とパラメーターを変数に格納してを使用user_call_func_array()することですが、上記のようなifステートメントが必要であるか、または他のオプションは、レミーの答えのように2つの3値ステートメントを使用してfunction1function。上記のifステートメントで1つだけではなく、2つの3値ステートメントを処理しているという理由だけで、この方法は理想的とは言えません。

于 2012-09-14T23:07:12.273 に答える
1

call_user_func_arrayメソッドを検索しています

call_user_func_array(
    array($myClass, isset($somecondition) ? 'function1' : 'function'), 
    isset($somecondition) ? array(100, 100) : array(300, 300)
);

関数に名前を付けることはできないので、彼のコードにはもっと多くの問題があります;)

于 2012-09-14T22:49:53.203 に答える
-2

かっこが間違っています

$myclass->$myFunction();
于 2012-09-14T22:45:16.750 に答える