рассмотрим этот простой сценарий:
$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));
Изменить: будет ли попытка / улавливать работу для исключения 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) }
-try { $soap_res = call_user_func_array(array($this->service,'getBanana'), array(0, 10)); } catch (SoapFault $fault) { die($fault->faultstring) }
Это должно работать:
call_user_func_array(array($this->object,'method'), array($arg1, $arg2));
Первый аргумент – это тип обратного вызова , содержащий ссылку на объект и имя метода.
Вот хакерский вариант, может быть полезен кому-то:
$method_name_as_string = 'method_name'; $this->$method_name_as_string($arg1, $arg2);
Это использует переменные переменные PHP. Ужасно, черт возьми, но не особенно уродливее других …