我需要动态调用我的函数名称。
$myFunction = isset($somecondition) ? "function1(100,100)" : "function(300,300)";
那么我需要调用该方法
$myclass->$myFunction;
我需要动态调用我的函数名称。
$myFunction = isset($somecondition) ? "function1(100,100)" : "function(300,300)";
那么我需要调用该方法
$myclass->$myFunction;
您不能将函数调用存储在这样的字符串中。您可以分别存储函数名称和参数,但最好使用简单的 if 语句并使用特定参数调用任一方法。
if($someCondition){
$myClass->function1(100, 100);
} else {
$myClass->function(300, 300);
}
任何其他方式都可以将函数名称和参数存储在变量中并使用user_call_func_array()
,但您仍然需要像上面这样的 if 语句,或者另一个选项是使用两个三元语句,就像在 remy 的答案中一样,只是用另一个三元语句在function1
和之间切换function
. 这种方法不太理想,因为您正在处理两个三元语句,而不是使用上面的 if 语句处理一个。
您正在搜索call_user_func_array方法
call_user_func_array(
array($myClass, isset($somecondition) ? 'function1' : 'function'),
isset($somecondition) ? array(100, 100) : array(300, 300)
);
无法命名函数函数,因此他的代码存在更多问题;)
括号不见了
$myclass->$myFunction();