Ответ 1
Это должно работать:
call_user_func_array(array($this->object,'method'), array($arg1, $arg2));
Первым аргументом является тип обратного вызова, содержащий ссылку на объект и имя метода.
рассмотрим этот простой сценарий:
$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)
}
Это должно работать:
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. Уродливо, черт возьми, но не особенно уродливее других...