sta*_*tac 26 php function dynamic
考虑这个简单的场景:
$this->method($arg1, $arg2);
Run Code Online (Sandbox Code Playgroud)
解:
call_user_func_array(array($this,'method'), array($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)
考虑这种情况:
$this->object->method($arg1, $arg2);
Run Code Online (Sandbox Code Playgroud)
该解决方案应该有效吗
call_user_func_array(array($this->object,'method'), array($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)
或者这应该工作?
call_user_func_array(array($this, 'object','method'), array($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)
编辑:使用call_user_func时,try/catch是否适用于SOAP异常,triger?
try {
$soap_res = call_user_func_array(array($this->service,'getBanana'), array(0, 10));
} catch (SoapFault $fault) {
die($fault->faultstring)
}
Run Code Online (Sandbox Code Playgroud)
Gre*_*reg 69
这应该工作:
call_user_func_array(array($this->object,'method'), array($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)
第一个参数是回调类型,包含对象引用和方法名称.
这是一个hackish变种,可能对某人有用:
$method_name_as_string = 'method_name';
$this->$method_name_as_string($arg1, $arg2);
Run Code Online (Sandbox Code Playgroud)
这使用PHP变量变量.像地狱一样丑陋,但并不比其他人更丑陋......