この単純なシナリオを考えてみましょう。
$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例外、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変数変数を使用します。地獄のように醜いですが、他のものより特に醜いわけではありません...