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 语句,或者另一个选项是使用两个三元语句,就像在 remy 的答案中一样,只是用另一个三元语句在function1和之间切换function. 这种方法不太理想,因为您正在处理两个三元语句,而不是使用上面的 if 语句处理一个。

于 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 回答