рассмотрим этот простой сценарий:
$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. Ужасно, черт возьми, но не особенно уродливее других …