考虑这个简单的场景:
$this->method($arg1, $arg2);
解决方案:
call_user_func_array(array($this,'method'), array($arg1, $arg2));
考虑这种情况:
$this->object->method($arg1, $arg2);
此解决方案是否有效?
call_user_func_array(array($this->object,'method'), array($arg1, $arg2));
或者这应该有用吗?
call_user_func_array(array($this, 'object','method'), array($arg1, $arg2));
编辑: try / catch是否适用于SOAP异常,triger同时使用call_user_func?
try {
$soap_res = call_user_func_array(array($this->service,'getBanana'), array(0, 10));
} catch (SoapFault $fault) {
die($fault->faultstring)
}
答案 0 :(得分:64)
这应该有效:
call_user_func_array(array($this->object,'method'), array($arg1, $arg2));
第一个参数是callback type,包含对象引用和方法名称。
答案 1 :(得分:5)
这是一个hackish变种,可能对某人有用:
$method_name_as_string = 'method_name';
$this->$method_name_as_string($arg1, $arg2);
这使用PHP变量。像地狱一样丑陋,但并不比其他人更加丑陋......